Non-Intrusive Security Enforcement for Federated Single Sign-On (SSO)

ABSTRACT

The technology disclosed relates to non-intrusively enforcing security during federated single sign-on (SSO) authentication without modifying a trust relationship between a service provider (SP) and an identity provider (IDP). In particular, it relates to configuring the IDP to use a proxy-URL for forwarding an assertion generated when a user logs into the SP, in place of an assertion consumer service (ACS)-URL of the SP. It also relates to configuring an assertion proxy, at the proxy-URL, to use the SP&#39;s ACS-URL for forwarding the assertion to the SP. It further relates to inserting the assertion proxy in between the user&#39;s client and an ACS of the SP by forwarding the assertion to the SP&#39;s ACS-URL to establish a federated SSO authenticated session through the inserted assertion proxy.

CROSS REFERENCE TO OTHER APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/795,957, entitled “NON-INTRUSIVE SECURITY ENFORCEMENT FOR FEDERATEDSINGLE SIGN-ON (SSO)”, filed on Oct. 27, 2017 (Attorney Docket No. NSKO1006-2), which claims priority to and the benefit of U.S. ProvisionalApplication No. 62/417,939, entitled “NON-INTRUSIVE SECURITY ENFORCEMENTFOR CLOUD-BASED FEDERATED SINGLE SIGN-ON (SSO)”, filed on Nov. 4, 2016(Attorney Docket No. NSKO 1006-1). The priority applications areincorporated by reference for all purposes.

This application incorporates by reference U.S. Nonprovisional patentapplication Ser. No. 14/198,499, entitled “SECURITY FOR NETWORKDELIVERED SERVICES”, filed on Mar. 5, 2014 (Attorney Docket No. NSKO1000-2) (now U.S. Pat. No. 9,398,102 issued on Jul. 19, 2016);

This application incorporates by reference U.S. Nonprovisional patentapplication Ser. No. 14/835,640, entitled “SYSTEMS AND METHODS OFMONITORING AND CONTROLLING ENTERPRISE INFORMATION STORED ON A CLOUDCOMPUTING SERVICE (CCS)”, filed on Aug. 25, 2015 (Attorney Docket No.NSKO 1001-2); and

This application incorporates by reference U.S. Provisional PatentApplication No. 62/307,305, entitled “SYSTEMS AND METHODS OF ENFORCINGMULTI-PART POLICIES ON DATA-DEFICIENT TRANSACTIONS OF CLOUD COMPUTINGSERVICES”, filed on Mar. 11, 2016 (Attorney Docket No. NSKO 1003-1).

FIELD OF THE TECHNOLOGY DISCLOSED

The technology disclosed relates generally to security for networkdelivered services, and in particular relates to non-intrusive securityenforcement during federated single sign-on (SSO) by preserving a trustrelationship between a service provider (SP) and an identity provider(IDP).

BACKGROUND

The subject matter discussed in this section should not be assumed to beprior art merely as a result of its mention in this section. Similarly,a problem mentioned in this section or associated with the subjectmatter provided as background should not be assumed to have beenpreviously recognized in the prior art. The subject matter in thissection merely represents different approaches, which in and ofthemselves can also correspond to implementations of the claimedtechnology.

The technology disclosed relates to non-intrusively enforcing securityduring federated single sign-on (SSO) authentication without modifying atrust relationship between a service provider (SP) and an identityprovider (IDP). In particular, it relates to configuring the IDP to usea proxy-URL for forwarding an assertion generated when a user logs intothe SP, in place of an assertion consumer service (ACS)-URL of the SP.It also relates to configuring an assertion proxy, at the proxy-URL, touse the SP's ACS-URL for forwarding the assertion to the SP. It furtherrelates to inserting the assertion proxy in between the user's clientand an ACS of the SP by forwarding the assertion to the SP's ACS-URL toestablish a federated SSO authenticated session through the insertedassertion proxy.

The explosive growth of cloud applications and, in particular,Software-as-a-Service (SaaS) applications has changed the wayorganizations do business. Lower maintenance costs, increased uptime,faster feature rollout, and the reduced need for on-site hardware arejust some of the reasons why cloud-based SaaS solutions are making deepand fast inroads to tasks that were formerly dominated solely byin-house IT staff.

However, user identity management (UIM) on SaaS applications isdifficult, time consuming, and expensive. To address the challenges andcost of UIM, many enterprises that subscribe to SaaS applications areturning to Identity-as-a-Service (IDaaS) solutions to easily create andmanage user identities across their entire portfolio of SaaS applicationsubscriptions, which usually span multiple platforms and can changeoften.

IDaaS solutions give users federated Single Sign-on (SSO) capability orfederated identity across all of an organization's SaaS applicationsubscriptions. SSO allows users of an organization to authenticate at asingle location, with a single account, and access a broad range of SaaSapplications. With SSO, a user does not need to be signed on severaltimes to call various applications, and can reuse the authenticatedstatus of a previous application in the same session. The benefit ofusing SSO is that it reduces human error and saves time spent inauthenticating with different SaaS applications for the same identity.Numerous mechanisms implement SSO between an IDaaS provider and aplurality of SaaS applications. For example, SSO is facilitated bySecurity Assertion Markup Language (SAML). SAML is an extensible markuplanguage (XML)-based open standard data format for communicatingsecurity information (authentication and authorization data) between anentity that provides user identities, i.e. an identity provider (e.g.,IDaaS), and an entity that provides the service that the user needs tolog in to, i.e. a service provider (e.g., SaaS application). Otherexamples of SSO implementation mechanisms include WS-Federation, OAuth,OpenID, LDAP, Kerberos, SecureID, Shibboleth System, eXtensible AccessControl Markup Language (XACML), and Service Provisioning MarkupLanguage (SPML).

Besides SSO, organizations have a requirement for monitoring,moderating, and curtailing access to the subscribed SaaS applications byway of a so-called cloud access security broker (CASB). However, mostorganizations cannot effectively use both an IDaaS solution to implementSSO, which requires establishment of a trust relationship between theIDaaS provider and the SaaS applications through direct communication,and a CASB server, which modifies the trust relationship by interruptingthe direct communication required for SSO.

As SaaS adoption by the enterprise continues to grow, so does the needto monitor, moderate, and manage access to the SaaS applications. Thelimited capabilities of existing CASB servers would require the setup ofan improved CASB server that enforces cloud security in a non-intrusivemanner without modifying the trust relationship between anorganization's IDaaS subscription and its SaaS applicationsubscriptions.

Therefore, an opportunity arises for the development of an enhanced CASBto overcome the above mentioned limitations of existing CASBs.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, like reference characters generally refer to like partsthroughout the different views. Also, the drawings are not necessarilyto scale, with an emphasis instead generally being placed uponillustrating the principles of the technology disclosed. In thefollowing description, various implementations of the technologydisclosed are described with reference to the following drawings, inwhich:

FIG. 1 shows an architectural level schematic of a system in accordancewith an implementation of the technology disclosed.

FIG. 2 shows one implementation of establishing a trust relationshipbetween a service provider (SP) and an identity provider (IDP).

FIG. 3 shows one implementation of a message exchange chart of federatedSingle Sign-On (SSO) based on the trust established in FIG. 2.

FIG. 4 shows one implementation of modifying a trust relationshipbetween a service provider (SP) and an identity provider (IDP).

FIG. 5 shows one implementation of a message exchange chart of federatedSingle Sign-On (SSO) based on the trust modified in FIG. 4.

FIG. 6 shows one implementation of a reverse proxy routing traffic froman unmanaged device to a network security system for policy enforcement.

FIG. 7 shows one implementation of the trust relationship preservationduring a federated SSO session by a N-CASB assertion proxy (AP).

FIG. 8 shows another implementation of a reverse proxy routing trafficfrom an unmanaged device to a network security system for policyenforcement.

FIG. 9 shows another implementation of the trust relationshippreservation during a federated SSO session by a N-CASB assertion proxy(AP).

FIG. 10 shows one implementation of the trust relationship preservationduring a federated SSO session by a N-CASB assertion proxy (AP).

FIG. 11 depicts a representative method of non-intrusive securityenforcement for federated single sign-on (SSO) authentication.

FIG. 12 is a flowchart showing a method of non-intrusively enforcingsecurity during federated single sign-on (SSO) authentication withoutmodifying a trust relationship between a service provider (SP) and anidentity provider (IDP).

FIG. 13 is a flowchart showing a method of non-intrusively enforcingsecurity during federated single sign-on (SSO) authentication withoutmodifying a trust relationship between a service provider (SP) and anidentity provider (IDP).

FIG. 14 is a simplified block diagram of a computer system that can beused to implement the technology disclosed.

DETAILED DESCRIPTION

The following discussion is presented to enable any person skilled inthe art to make and use the technology disclosed, and is provided in thecontext of a particular application and its requirements. Variousmodifications to the disclosed implementations will be readily apparentto those skilled in the art, and the general principles defined hereinmay be applied to other implementations and applications withoutdeparting from the spirit and scope of the technology disclosed. Thus,the technology disclosed is not intended to be limited to theimplementations shown, but is to be accorded the widest scope consistentwith the principles and features disclosed herein.

The discussion is organized as follows. First, an explanation ofterminology that is used throughout the discussion is provided. Then, anintroduction describing some of the technical problems addressed byvarious implementations is presented. Next, a high-level description ofone implementation is discussed at an architectural level. Lastly, moredetailed architectures for implementing the system, together with themethods, are discussed.

Terminology

Service Provider (SP): As used herein, the application or website theuser is trying to sign into is referred to as a “service provider”. TheSP is a Software-as-a-Service (SaaS) application such asSalesforce.com™, Box™, Dropbox™, Google Apps™, Amazon AWS™ MicrosoftOffice 365™, Workday™, Oracle on Demand™, Taleo™, Yammer™, and Concur™.The SP can be offered as a web-architected application or acloud-delivered legacy service. The SP can also be operationalized as anon-premise service.

SaaS (Software-as-a-Service) Application: As used herein, thecloud-based SP or a hosted service or a cloud service or a cloudapplication or a cloud storage provider or a cloud storage applicationor a cloud computing service (CCS) is referred to as a “SaaSapplication”, and vice-versa. Also as used herein, a cloud service,sometimes also referred to as a cloud computing service (CCS), or ahosted service or a cloud application refers to a network cloud serviceor application, web-based (e.g., accessed via a uniform resource locator(URL)) or native, such as sync clients. Examples include SaaS offerings,platform-as-a-service (PaaS) offerings, and infrastructure-as-a-service(IaaS) offerings, as well as internal enterprise applications that areexposed via URLs. Examples of common SaaS applications today includeSalesforce.com™, Box™, Dropbox™, Google Apps™, Amazon AWS™, MicrosoftOffice 365™, Workday™, Oracle on Demand™, Taleo™, Yammer™, and Concur™.SaaS applications provide functionality to users that is implemented inthe cloud and that is the target of policies, e.g., logging in, editingdocuments, downloading bulk data, reading customer contact information,entering payables, deleting documents, in contrast to the offerings of asimple website and ecommerce sites. Note that some consumer facingwebsites, e.g., Facebook™ and Yammer™, which offer social networks arethe type of SaaS applications considered here. Some SaaS applications,e.g., Google's Gmail™ can be a hybrid with some free users using theapplication generally while other corporations use it as an enterprisesubscription. Note that a SaaS application can be supported by both webbrowser clients and application clients that use URL-based APIs(application programming interfaces). Thus, using Dropbox™ as anexample, user activity on the Dropbox™ website, as well as activity ofthe Dropbox™ client on the computer could be monitored.

Identity Provider (IDP): As used herein, the entity that actuallyauthenticates the user is referred to as an “identity provider”. IDPalso provides the user identities and contains the user profiles,including additional information about the users such as first name,last name, job code, phone number, address, etc. Depending on theapplication, some IDPs may require a very simple profile (e.g.,username, e-mail), while others may require a richer set of user data(e.g., job code, department, address, location, manager, etc.). The IDPalso serves as an Identity-as-a-Service (IDaaS).

Identity-as-a-Service (IDaaS): As used herein, the cloud-based IDP thatprovides a set of identity and access management functions to target SPsis referred to as an “IDaaS”. IDaaS functionality includes identitygovernance and administration (IGA), which includes the ability toprovision identities held by the target SPs. IDaaS also provides userauthentication, SSO, and authorization enforcement. Examples of commonIDaaS providers today include Okta™, Ping Identity™, Windows AzureActive Directory™, EmpowerID™, OneLogin™, Bitium™ Centrify™, Identacor™,and LastPass™.

Trust Relationship: As used herein, a trust relationship between a SPand an IDP is established using digital certificates and/orcryptographic keys. The certificate or key, is issued by a trustedcertification authority, and installed on both ends of a digitaltransaction. The certificate or key ensures that the informationdelivered by the IDP to the SP is authentic and uncompromised. When theIDP delivers an assertion to the SP, the certificate or key ensures thatthe information can be trusted. The trust relationship is established byconfiguring an IDP URL at the SP and configuring at the IDP a URL of theSP's assertion consumer service (ACS).

Modification of a Trust Relationship: As used herein, modification of atrust relationship between a SP and an IDP refers to requiring the SP totrust an intermediate entity placed in line between the SP and IDP,rather than directly trusting the IDP itself. The trust relationship ismodified when the intermediate entity is a CASB or reverse proxy, whereinstead of configuring a digital certificate or key of the IDP at theSP, a digital certificate or key of the CASB or the reverse proxy isconfigured at the SP. The trust relationship is also modified when thepublic key used to verify the assertion at the SP is shared between theCASB or the reverse proxy and the SP, rather than being shared betweenthe SP and the IDP. The trust relationship is also modified when the SPis configured to forward an authentication request to a CASB URL or areverse proxy URL, rather than to an IDP URL. The trust relationship isalso modified when contents of an assertion generated by the IDP aremodified by an intermediary such as a CASB or a reverse proxy.

Netskope-CASB (N-CASB): As used herein, “Netskope-CASB” is a networksecurity system that serves as a cloud-based security apparatus oron-premises policy enforcement point, placed between users and SaaSapplications to combine and interject enterprise security policies asthe SaaS applications are accessed. N-CASB consolidates multiple typesof security policy enforcement. Example security policies includeauthentication, federated single sign-on (SSO), authorization,credential mapping, device profiling, encryption, tokenization, dataleakage prevention (DLP), logging, alerting, malwaredetection/prevention, and so on. The N-CASB analyzes the applicationlayer traffic using APIs for deeply inspecting SaaS applicationtransactions in real-time. For additional information regarding theN-CASB, reference can be made to, for example, commonly owned U.S.patent application Ser. Nos. 14/198,499; 14/198,508; 14/835,640;14/835,632; and 62/307,305; Cheng, Ithal, Narayanaswamy, and Malmskog.Cloud Security For Dummies, Netskope Special Edition. John Wiley & Sons,Inc. 2015; “Netskope Introspection” by Netskope, Inc.; “Data LossPrevention and Monitoring in the Cloud” by Netskope, Inc.; “Cloud DataLoss Prevention Reference Architecture” by Netskope, Inc.; “The 5 Stepsto Cloud Confidence” by Netskope, Inc.; “The Netskope Active Platform”by Netskope, Inc.; “The Netskope Advantage: Three “Must-Have”Requirements for Cloud Access Security Brokers” by Netskope, Inc.; “The15 Critical CASB Use Cases” by Netskope, Inc.; “Netskope Active CloudDLP” by Netskope, Inc.; “Repave the Cloud-Data Breach Collision Course”by Netskope, Inc.; and “Netskope Cloud Confidence Index™” by Netskope,Inc., which are incorporated by reference for all purposes as if fullyset forth herein.

Additionally, unlike existing CASBs, N-CASB behaves as an assertionproxy that preserves the trust relationship between an IDP or IDaaS anda SP or SaaS application. The N-CASB can also serve as an assertionconsumer service (ACS) that is responsible for receiving assertions fromthe IDP. The N-CASB also encrypts the assertions received from the IDP(e.g., using a SP or SaaS public key) and forwards the encryptedassertions to the SP.

Unmanaged Device: As used herein, an “unmanaged device” is referred toas a Bring Your Own Device (BYOD) and/or an off-network device whosetraffic is not being tunneled through a policy-enforcing server. TheN-CASB analyzes the incoming traffic to determine whether the SaaSapplication transactions are made within the confines of a corporatenetwork and/or from a device with a security agent or security profileinstalled. A device can be classified as an unmanaged device or as amanaged device based on certain device characteristics collected by anendpoint routing agent (ERC). Depending on the type of device, ERC canbe a virtual private network (VPN) such as VPN on demand or per-app-VPNthat use certificate-based authentication. For example, for iOS™devices, it can be a per-app-VPN or can be a set of domain-based VPNprofiles. For Android™ devices, it can be a cloud director mobile app.For Windows™ devices, it can be a per-app-VPN or can be a set ofdomain-based VPN profiles.

ERC can also be an agent that is downloaded using e-mail or silentlyinstalled using mass deployment tools like ConfigMgr™, Altris™, andJamf™.

ERC collects device information such as registry key, active directory(AD) membership, presence of a process, operating system type, presenceof a file, AD domain, encryption check, OPSWAT check, media accesscontrol (MAC) address, IMEI number, and device serial number. Based onthe collected device information, ERC classifies the device as unmanagedor managed. Additional or different categories can be used to classify adevice such as a semi-managed device category or an unknown devicecategory.

For additional information regarding how the N-CASB determines whetherthe incoming traffic is routed from a managed device or an unmanageddevice, reference can be made to, for example, commonly owned U.S.patent application Ser. Nos. 14/198,499; 14/198,508; 14/835,640;14/835,632; and 62/307,305, which are incorporated by reference for allpurposes as if fully set forth herein.

Policy: As used herein, the term “policy”, sometimes also referred to asa policy definition or policy data or content policy refers to amachine-readable representation of flow control and content controlrequirements for SaaS applications. Typically, a policy is defined byone or more administrators at a corporation, or other entity, and isenforced upon users within that corporation, or entity. It is possiblefor individuals to define policies for their own usage that are enforcedupon them; however, corporate usage is the more common case. It is alsopossible for a policy to be enforced on visitors or customers of a SaaSapplication, e.g., where a corporation hosts or subscribes to a SaaSapplication and requires visiting customers, users, or employees toadhere to the policy for use. Of particular note is that the policiesconsidered herein are capable of being sensitive to the semantics of aSaaS application, which is to say a policy can differentiate betweenlogging in to a SaaS application from, say, editing documents on theSaaS application.

Context is important for understanding usage; for an entity, thecollection of dozens or hundreds of individual policies (e.g., log bulkdownloads, prohibit editing documents on the service, only allow bulkdownloads for users who are in the “Vice President” group) is referredto singularly as one policy, or one policy definition. Thus, a systemsupporting multiple entities will generally have one policy per entity,each made up of dozens or hundreds of individual flow control andcontent control policies. Similarly, the policy that is transferred toindividual computers can be a subset of a full corporate policy, e.g.,solely a machine-readable representation of the URLs of interest, asopposed to the full policy specification for each URL describing theflow control and/or content manipulations.

Multi-Part Policy: As used herein, a “multi-part policy” refers to apolicy that specifies triggering of at least one security action when atleast one condition about the transaction is met. A multi-part policyapplies to a single transaction, but at least one policy condition ofthe multi-part policy requires evaluation of data or metadata notavailable in the single transaction. Also, a multi-part policy appliesto a single transaction, but at least one policy condition of themulti-part policy requires evaluation of data or metadata available inan external data or metadata store. Further, a multi-part policy appliesto a single transaction, but at least one policy condition of themulti-part policy requires evaluation of data or metadata generated byan external engine. A multi-part policy applies in real-time duringactive analysis, but at least one policy condition of the multi-partpolicy requires evaluation of data or metadata collected in deferredtime or during non-real-time inspection. Examples of multi-part policiesinclude “prevent user form uploading/downloading, if user is at risk asindicated by anomaly detection”, “prevent sharing of a file, if file issensitive”, “prevent download of a file to a device, if the device is atrisk as indicated by a malware detection engine”, “prevent deletion of avirtual machine, if the virtual machine is a critical server”, andothers.

Application Programming Interface (API): As used herein, an “applicationprogramming interface” refers to a packaged collection of codelibraries, routines, protocols methods and fields that belong to a setof classes, including its interface types. The API defines the way thatdevelopers and programmers can use the classes for their own softwaredevelopment, just by importing the relevant classes and writingstatements that instantiate the classes and call their methods andfields. An API is a source code based specification intended to be usedas an interface by software components to communicate with each other.An API can include specifications for routines, data structures, objectclasses and variables. Basically, an API provides an interface fordevelopers and programmers to access the underlying platformcapabilities and features of online social networks. The technologydisclosed uses different types of APIs, including web service APIs suchas HTTP or HTTPs based APIs like SOAP, Bulk, XML-RPC and JSON-RPC andREST APIs (e.g., Flickr™, Google Static Maps™, Google Geolocation™), websocket APIs, library-based APIs like JavaScript and TWAIN (e.g., GoogleMaps™ JavaScript API, Dropbox™ JavaScript Data store API, Twilio™ APIs,Oracle Call Interface (OCI)), class-based APIs (objet orientation) likeJava API and Android API (e.g., Google Maps™ Android API, MSDN ClassLibrary for .NET Framework, Twilio™ APIs for Java and C#), OS functionsand routines like access to file system and access to user interface,object remoting APIs like CORBA and .NET Remoting and hardware APIs likevideo acceleration, hard disk drives, and PCI buses. Other examples ofAPIs used by the technology disclosed include Amazon EC2 API™, BoxContent API™, Microsoft Graph™, Dropbox API™, Dropbox API v2™, DropboxCore API™, Dropbox Core API v2™, Facebook Graph API™, Foursquare API™,Geonames API™, Force.com API™, Force.com Metadata API™, Apex API™,Visualforce API™, Force.com Enterprise WSDL™, Salesforce.com StreamingAPI™, Salesforce.com Tooling API™, Google Drive API™, Drive REST API™,AccuWeather API™, aggregated-single API like CloudRail™ API, and others.

Mobile and Tablet vs. Computer: Portions of the specification may makedistinctions between two types of client devices used by users to accessSaaS applications. The primary distinction is between the mechanisms forcoupling the client device to the N-CASB. In relation to client devices,the term “computer” will refer to more open systems where the N-CASB canmore directly install software and modify the networking stack.Similarly, in relation to client devices, the terms “mobile” or “tablet”will refer to more closed systems where the network security systemoptions for modifying the network stack are more limited. Thisterminology mirrors the situation today where computer-client devicesrunning Mac OS X, Windows desktop versions, Android, and/or Linux can bemore easily modified than mobile or tablet devices running iOS, and/orWindows Mobile. Thus, the terminology refers to how third-partyoperating system vendor limitations are addressed to provide access tothe network security system as opposed to a fundamental technicaldifference between the types of client devices. Further, if mobile OSvendors open their systems further, it is likely that the distinctioncould be eliminated with more classes of client devices. Additionally,it can be the case that certain server computers and other computingdevices within an organization can have the client installed to covermachine-to-machine communications.

A closely related point is that some clients interface with the N-CASBdifferently. The browser add-on clients, for example, redirect thebrowsers to an explicit proxy. Only the traffic needed to apply thepolicy to is rerouted and it is done so within the application. Thetraffic arriving at the N-CASB can have the user identity embedded inthe data or within the secure tunnel headers, e.g., additional headersor SSL client side certificates. Other clients redirect select networktraffic through transparent proxies. For these connections, some trafficbeyond exactly those requests needed by the policy can be routed to theN-CASB. Further, the user identity information is generally not withinthe data itself, but rather established by the client in setting up asecure tunnel to the N-CASB.

User Identity: As used herein, “user identity” or “user identification”refers to an indicator that is provided to the client device. It can bein the form of a token, a unique identifier such as a UUID, a public-keycertificate, or the like. The user identity can be linked to a specificuser and a specific device; thus, the same individual can have adifferent user identity on their mobile phone vs. their computer. Theuser identity can be linked to an entry or userID corporate identitydirectory, but is distinct from it. A cryptographic certificate can beused as the user identity. The user identity can be solely unique to theuser and be identical across devices.

Introduction

With the objective to overcome the limitations of existing CASBs, animproved CASB has been developed by Netskope, Inc.™. This improved CASBis referred to herein as “Netskope-CASB (N-CASB)”, features andimplementations of which are described in the following.

Existing CASB servers behave as intrusive proxies that insert themselvesin the middle of the trusted authentication conversation between the SPand the IDP. To resolve the incompatibility of existing CASBs toeffectively operate in conjunction with federated SSO, the technologydisclosed proposes a system and methods wherein an improved CASB (termedNetskope-CASB (N-CASB)) behaves as an assertion proxy, preserving thetrust relationship between the SP and the IDP. In this way, the N-CASBcan be used for its original purposes of managing access to the SaaSapplications, while not hindering the security and user identitymanagement (UID) that IDP provides for federated SSO authentication withthe SaaS applications.

Trust Relationship

FIG. 2 shows one implementation of establishing a trust relationshipbetween a service provider (SP) and an identity provider (IDP).Complementary to FIG. 2, FIG. 3 shows one implementation of a messageexchange chart of federated Single Sign-On (SSO) based on the trustestablished in FIG. 2.

Before the SSO authentication method can work, the organization,company, or enterprise, on behalf of the user, establishes a trustrelationship with the IDP 208 in a separate off-line or out-of-bandprocess shown in FIG. 2. This is done by configuring an IDP public keyat the SP 202. Similarly the SP 202 has an independent trustrelationship with the IDP 208. The SSO authentication method thenprovides the ability for the IDP 208 and multiple SaaS applications todynamically establish secure one-on-one relationships. Briefly, the waythe IDP 208 and the SP 202 trust each other is that they share keys forencryption and decryption, where the keys were established when the SSOimplementation is first configured in FIG. 2.

FIG. 2 includes the SP 202, the IDP 208, and an organization's trustrelationship establisher 226. The SP 202, the IDP 208, and theestablisher 226 are connected via a network, such as the network 115.The SP 202 and the IDP 208 can be a workstation, server, computingcluster, blade server, server farm, or any other data processing systemor computing device. In some implementations, the SP 202 is a SaaSapplication and the IDP 208 is an IDaaS provider. In one implementation,the SP 202 includes an assertion consumer service (ACS), which isaccessible by an ACS URL. In another implementation, the IDP 208 isaccessible by an IDP URL.

In FIG. 2, the establisher 226 is used to establish a trust relationshipbetween the SP 202 and the IDP 208. In implementations, an organization,company, or enterprise has a portfolio of SaaS applicationsubscriptions. In one implementation, the organization uses an IDaaSprovider as the IDP 208 to perform user identity management (UID) acrossthe entire portfolio of SaaS application subscriptions. In FIG. 2, theSP 202 represents just one SaaS application for clarity's sake. In otherimplementations, the establisher 226 can establish a trust relationshipbetween a plurality of SaaS applications and the IDP 208.

In some implementations, the trust relationship between the SP 202 andthe IDP 208 is established by configuring the IDP URL at the SP 202 andconfiguring the SP ACS URL at the IDP 208. In other implementations, thetrust relationship is established by configuring a public key or digitalcertificate of the IDP 208 at the SP 202. In FIG. 2, the establisher 226can be used to configure the IDP URL and the IDP public key at the SP202 and the SP ACS URL at the IDP 208, as shown.

FIG. 3 shows one implementation of a message exchange chart of federatedSSO based on the trust established in FIG. 2. In the example illustratedin FIG. 3, the SSO is implemented using SAML. The SAML federatedauthentication can be “identity provider-initiated” or “serviceprovider-initiated”. In yet other implementations, different SSOtechnologies can be used, such as WS-Federation, OAuth, OpenID,SecureID, LDAP, Kerberos, SecureID, Shibboleth System, eXtensible AccessControl Markup Language (XACML), and Service Provisioning MarkupLanguage (SPML).

Regarding SAML, SAML provides a secure, XML-based solution forexchanging user security information between a service provider (e.g.,the SP 202) that may be a SaaS application and an identity provider(e.g., the IDP 208) that may be an IDaaS provider. A description of SAML2.0 can be found on the web at <https://en.wikipedia.org/wiki/SAML_2.0>;<http://saml.xml.org/saml-specifications>; and<http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html>.Another description of SSO with SAML can be found at<https://developer.salesforce.com/page/Single Sign-On with SAML onForce.com>.

In FIG. 3, the IDP 208 is the asserting party, the SP 202 is the partyrelying on the assertion, and the user 326 operating a client withbrowser 336 is the subject of the assertion. The IDP 208 is theauthority system that provides information confirming the user'sidentity. The SP 202 is the system that trusts the identity provider'suser information, and uses this information to provide access to theSaaS application. The transaction from the IDP 208 to the SP 202 iscalled a SAML assertion. The structure of the SAML assertion is definedby an XML schema that is specified by the Organization for theAdvancement of Structured Information Standards (OASIS) SAML standard.The SAML assertion contains header information, and statements about thesubject in the form of attributes and conditions such as a start andlogout URL. Web browser SSO is SAML's most widely used feature and istypically used in conjunction with the Hypertext Transfer Protocol(HTTP) POST binding and authentication request protocol. Web browser SSOcan be initiated by the IDP 208 or by the SP 202 if a user's session hasnot been established. The assertion is also digitally signed by the IDP208.

In FIG. 3, all communications between the SP 202 and the IDP 208 occurvia the browser 336. At exchange 1, the user 326 tries to log in to theSaaS application represented by the SP 202 or to any other resource orservice hosted or provided by the SP 202. However, before the user 326is able to use services provided by the SP 202, the “identity” of theuser 326 must be provided by the IDP 208, and authenticated and acceptedby the SP 202. This is what is meant by “authentication”. The “identity”is an “assertion” that the IDP 208 provides to the user 326 once the IDP208 has validated the identity of the user 326. This forms a trustrelationship between the IDP 208 and the SaaS application hosted by theSP 202, as the user 326 takes the assertion provided by the IDP 208 anduses it as authentication to access the SaaS application, instead ofhaving to log in again with a different set of credentials to the SP 202for authentication. In one implementation, SAML 2.0 protocol providesthe process and standard by which the authentication trust relationshipis established and realized to allow the user 326 to authenticate once,against the IDP 208, and then use the assertion to access SaaSapplications without having to re-authenticate during a session, asother SaaS applications accept the provided assertion as proof that anauthentication check has already successfully been performed by the IDP208.

In response, at exchange 2, the SP 202 generates an authenticationrequest, i.e. a “SAML request”, to request an authentication from theIDP 208. At exchange 3, the SP 202 redirects the browser 336 to the IDPURL. In other implementations, the redirection occurs via API calls froman application program of the user 326. At exchange 4, the IDP 208authenticates the user 326, for example, by a multi-factorauthentication mechanism or a previous IDP authentication session wherethe IDP 208 is part of a larger trust relationship and where the user326 already has an assertion provided to it from another IDP.

Upon successful authentication of the user 326, the IDP 208 generates an“assertion” or “SAML assertion” at exchange 5 in the form of an XMLpayload back to the browser 336, which the user 326 can use to accessthe SaaS applications, for example the one hosted by the SP 202. Theuser 326 can present the assertion to the service provider (e.g., the SP202) in place of performing another type of authentication (e.g.,username/password login). Accordingly, at exchange 6, the IDP 208 sendsthe assertion to an ACS of the SP 202 via the browser 336, which poststhe assertion to the ACS URL.

The assertion itself contains two components—the actual assertion, inthe form of an XML document, and an assertion signature, which isessentially an encrypted version of the XML document. Since thesignature is encrypted, the SP 202 must have been provided with a keyduring the initial configuration of the trust relationship, as depictedin FIG. 2. At exchange 7, the ACS of the SP 202 verifies the assertionusing the IDP public key configured at the SP 202 during the separateoff-line or out-of-band establishment of the trust relationship. In oneimplementation, the SP 202 opens the assertion document and sees aclear-text XML component, as well as a digital XML signature which isnot encrypted because it is a one-way hash type signature. A documentproviding details on XML signature syntax and processing can be found at<https://www.w3.org/TR/xmldsig-core/>. The digital XML signature isverified by hashing the clear-text XML content and comparing theresulting signature with the digital XML signature. The browser 336 doesnot actually have the key used for the XML signature generation. Thebrowser 336 transmits the SAML authentication request and SAML responsewith the assertion but does not use any key for signing orauthenticating. The browser 336 is just a conduit and just forwards thesigned assertion response from the IDP 208 to the SP 202.

After a successful progress through the exchanges 1 to 7, the requestedresource in the SP 202 is returned in the exchange 8 to the user 326,who is now logged in with the SP 202. Exchanges 1 to 7 constitute acomplete IDP authentication session for the user 326. Once the user hasbeen authenticated against the IDP 208, and gets provided with theassertion, the user 326 can then use this assertion repeatedly. In someimplementations, the user 326 can use it with different serviceproviders and SaaS applications, provided those SPs and SaaSapplications have already been configured to accept assertions from thesame IDP 208, by virtue of sharing of an encryption public key.

Trust Relationship Modification

With establishment of a trust relationship understood in the context offederated SSO, the discussion now turns to how existing CASBs modifythis trust relationship.

As discussed supra, existing CASBs modify the trust relationship betweena SP and an IDP by configuring a CASB or reverse proxy encryption key atthe SP, rather than configuring an IDP encryption key, as described inFIGS. 2 and 3. As a result, the assertion is verified at the SP using adigital certificate or key that is shared between the SP and the CASB orthe reverse proxy, rather than being shared between the SP and the IDP.

Existing CASBs' modification of the trust relationship between theservice provider and the identity provider is undesirable to mostorganizations for a variety of reasons. For instance, trust modificationcreates an increased risk of security breach because existing CASBs haveaccess to, and often modify, the contents of the assertion. Since theassertion includes sensitive data, such as user credentials,organizations do not prefer that such sensitive data be exposed to theCASBs. The technology disclosed closes this security gap in federatedSSO by encrypting the assertion at the IDP and preventing the N-CASBfrom accessing the contents of the assertion, let alone modifying them.

Also, often, the organizations have a service level agreement (SLA) withthe identity providers, such as the IDaaS providers, which facilitatethe federated SSO. Invariably, the SLA's technical requirement is thatthe organizations establish and maintain a direct trust relationshipbetween the IDaaS provider and its SaaS application subscriptions. Byinserting themselves between an organization's SaaS applicationsubscriptions and the IDaaS provider and modifying the trustrelationship, existing CASBs force the parties to violate the terms oftheir SLA. The technology disclosed overcomes this technical problem bypreserving the trust relationship between the IDP and the SP, and thusenforcing compliance of SLAs, as described in detail below in FIGS.7-14.

In FIG. 4, before this SSO authentication method can work, theorganization, company, or enterprise, on behalf of the user, modifies atrust relationship between the SP 402 and the IDP 408 in a separateoff-line or out-of-band process by configuring a CASB public key at theSP 402, instead of configuring an IDP public key. In someimplementations, the trust relationship is also modified because a CASBIDP URL is configured at the SP 402, rather than a URL of the IDP 408,which causes the SP 402 to forward the authentication request to theCASB IDP and not to the IDP 408. In the example shown in FIG. 4, thetrust relationship is modified using the modifier 426. Accordingly, theSP 402 no longer has an independent trust relationship with the IDP 408.

Complementary to FIG. 4, FIG. 5 shows one implementation of a messageexchange chart of federated Single Sign-On (SSO) based on the trustmodified in FIG. 4 by an inline CASB inserted in the middle of thetrusted authentication conversation between the SP 402 and the IDP 408.In the example shown in FIG. 5, the SP 402 is configured with a CASBpublic key and a CASB IDP URL and the IDP 408 is configured with a CASBACS URL. Accordingly, the SP 402 trusts a CASB IDP 548 instead of theIDP 408. Also, the IDP 408 trusts a CASB SP 542 instead of the SP 402.

In FIG. 5, all communications between the SP 402 and the IDP 408 occurvia the browser 336. At exchange 1, the user 326 tries to log in to theSaaS application represented by the SP 402 or to any other resource orservice hosted or provided by the SP 402. However, before the user 326is able to use services provided by the SP 402, the “identity” of theuser 326 must be provided by the IDP 408, and authenticated and acceptedby the SP 402. This is what is meant by “authentication”. In response,at exchange 2, the SP 402 generates an authentication request, i.e. a“SAML request”, which is forwarded to the CASB IDP URL rather than tothe IDP URL. At exchange 3, the SP 402 redirects the browser 336 to theCASB IDP URL. At exchange 4, the CASB IDP 548 redirects the browser 336to the IDP URL. In other implementations, the redirection occurs via APIcalls from an application program of the user 326.

At exchange 5, the IDP 408 authenticates the user 326, for example, by amulti-factor authentication mechanism or a previous IDP authenticationsession where the IDP 408 is part of a larger trust relationship andwhere the user 326 already has an assertion provided to it from anotherIDP. Upon successful authentication of the user 326, the IDP 408generates an “assertion” or “SAML assertion” at exchange 6 in the formof an XML payload back to the browser 336, which the user 326 can use toaccess the SaaS applications, for example the one hosted by the SP 402.The user 326 can present the assertion to the service provider (e.g.,the SP 402) in place of performing another type of authentication (e.g.,username/password login). Accordingly, at exchange 7, the IDP 408 sendsthe assertion to an ACS of the CASB SP 542 via the browser 336, ratherthan to an ACS of the SP 402.

At exchange 8, the CASB SP 542, which is configured with an IDP publickey, verifies the assertion using the IDP public key and re-certifiesthe assertion using a CASB private key. Also at exchange 8, CASBevaluates the traffic to determine whether the traffic is routed from amanaged device or an unmanaged device. If the traffic is routed from amanaged device, then at exchange 9, the CASB SP 542 posts there-certified assertion to the SP ACS URL via the browser 336. Then, atexchange 10, the SP ACS verifies the re-certified assertion using theCASB public key. Once the assertion is verified by the SP 402, the useris logged in to the SaaS application at exchange 11.

In contrast, if at exchange 8, the CASB determines that the traffic isrouted from an unmanaged device, then, at exchange 12, the CASB SP 542posts the re-certified assertion to a reverse proxy 602 via the browser336, instead of posting it to the SP ACS URL. In one implementation,this is done by adding a revers proxy domain to the SP ACS URL or to aSaaS application URL (provided by the SP 402) to which the re-certifiedassertion was supposed to be posted. For example, if the SaaSapplication URL is “login.saasapplication.com”, then the re-certifiedassertion is posted to “login.saasapplication.com/reverseproxydomian”.

FIG. 6 shows one implementation of a reverse proxy routing traffic froman unmanaged device to a network security system for policy enforcement.The network security system can also serve as a forward proxy or a proxyserver. A list of common uses of reverse proxies can be found in<https://en.wikipedia.org/wiki/Reverseproxy>.

At exchange 13, the reverse proxy (RP) 602, after validating avalidation token accompanied with the decrypted assertion, strips offthe reverse proxy domain from the SP ACS URL of the re-certifiedassertion and forward the re-certified assertion to a network securitysystem or forward proxy (FP) 604 at exchange 14. The validation tokencan be a cookie, an embedded parameter in a modified URL, and/or aheader identified in the request. The FP 604, at exchange 15, enforcessecurity policies on the routed traffic to control access to the SP 402.If the routed traffic is determined by the network security system orforward proxy 604 to not qualify for blocking or another security actionbased on the security policies, then the re-certified assertion is sentto the SP 402 at exchange 16.

At exchange 17, the ACS of the SP 402 verifies the assertion using theCASB public key, as it would have at exchange 10 in the case of amanaged device. Further, the pages returned by the SP 402 at exchange 18include a plurality of URLs, which are forwarded to the reverse proxy602 by the network security system or forward proxy 604 at exchange 19.The reverse proxy 602 rewrites these URLs so that when the user 326clicks on them, then instead of going directly to the SP 402, the useris tunneled through the network security system or forward proxy 604 forpolicy enforcement. This way, any subsequent traffic from the unmanageddevice is mandatorily routed through the network security system orforward proxy 604.

System Overview

With modification of a trust relationship understood in the context offederated SSO, the discussion now turns to how the disclosed N-CASBpreserves the trust relationship or the trust chain or the trustedconversation between a service provider and an identity provider.

We describe a system and various implementations to preserve the trustrelationship established for federated SSO between a service provider(SP) and an identity provider (IDP) while enforcing network securitypolicies on transactions involving the SP. The system is described withreference to FIG. 1, showing an architectural level schematic of asystem in accordance with an implementation. Because FIG. 1 is anarchitectural diagram, certain details are intentionally omitted toimprove the clarity of the description. The discussion of FIG. 1 isorganized as follows. First, the elements of the figure are described,followed by their interconnections. Then, the use of the elements in thesystem is described in greater detail. Finally, the processes aredescribed in FIGS. 7-13.

FIG. 1 includes the SP 102 (hosting one or more SaaS applications) andthe IDP 108 (representing an IDaaS). The system also includes theNetskope-CASB (N-CASB) 160, an assertion proxy 170, a reverse proxy 180,and a network security system 190. In some implementations, the proxies170, 180, and 190 are hosted together as a combined unit part of theN-CASB 160. In other implementations, they are hosted separately. In oneimplementation, the assertion proxy 170 and the reverse proxy 180 arecombined into a single proxy that performs the functionalities of boththe assertion proxy 170 and the reverse proxy 180. In someimplementations, the proxies 170, 180, and 190 are cloud-based proxies.In other implementations, the proxies 170, 180, and 190 are on-premiseproxies. The network security system 190 stores, among other things,content policies 191, content profiles 192, content inspection rules193, enterprise data 194, and user identities 196. In someimplementations, the network security system 190 can store informationfrom one or more tenants into tables of a common database image to forman on-demand database service (ODDS), which can be implemented in manyways, such as a multi-tenant database system (MTDS). A database imagecan include one or more database objects. In other implementations, thedatabases can be relational database management systems (RDBMSs), objectoriented database management systems (OODBMSs), distributed file systems(DFS), no-schema database, or any other data storing systems orcomputing devices. The client devices 150 include the mobile 152 and thecomputer 154.

In implementations, the system shown in FIG. 1 includes an improvedCASB, referred to herein as the “Netskope-CASB (N-CASB))”, whichpreserves the trust relationship between the SP 102 and the IDP 108while controlling access to the SaaS application using a variety ofmechanisms and components such as log-based discovery, deep APIinspection (DAPII), introspection, inline agentless steering, inlinethin agent or mobile profile steering, reverse proxy 180, networksecurity system 190, monitor 120, active analyzer 130, inspectiveanalyzer 140, extraction engine 121, classification engine 122, securityengine 123, management plane 124, and data plane 125, and so on. Foradditional information regarding the functionality of the N-CASB 160,reference can be made to, for example, commonly owned U.S. patentapplication Ser. Nos. 14/198,499; 14/198,508; 14/835,640; 14/835,632;and 62/307,305; Cheng, Ithal, Narayanaswamy, and Malmskog. CloudSecurity For Dummies, Netskope Special Edition. John Wiley & Sons, Inc.2015; “Netskope Introspection” by Netskope, Inc.; “Data Loss Preventionand Monitoring in the Cloud' by Netskope, Inc.; “Cloud Data LossPrevention Reference Architecture” by Netskope, Inc.; “The 5 Steps toCloud Confidence” by Netskope, Inc.; “The Netskope Active Platform” byNetskope, Inc.; “The Netskope Advantage: Three “Must-Have” Requirementsfor Cloud Access Security Brokers” by Netskope, Inc.; “The 15 CriticalCASB Use Cases” by Netskope, Inc.; “Netskope Active Cloud DLP” byNetskope, Inc.; “Repave the Cloud-Data Breach Collision Course” byNetskope, Inc.; and “Netskope Cloud Confidence Index™” by Netskope,Inc., which are incorporated by reference for all purposes as if fullyset forth herein.

The interconnection of the elements of the system shown in FIG. 1 arenow described. The network 115 couples the mobile 152, the computer 154,the SP 102, the IDP 108, and the N-CASB 160 in communication (indicatedby solid lines). The actual communication path can be point-to-pointover public and/or private networks. All of the communications can occurover a variety of networks, e.g. private networks, VPN, MPLS circuit, orInternet, and can use appropriate APIs and data interchange formats,e.g. REST, JSON, XML, SOAP and/or JMS. All of the communications can beencrypted. This communication is generally over a network such as theLAN (local area network), WAN (wide area network), telephone network(Public Switched Telephone Network (PSTN), Session Initiation Protocol(SIP), wireless network, point-to-point network, star network, tokenring network, hub network, Internet, inclusive of the mobile Internet,via protocols such as EDGE, 3G, 4G LTE, Wi-Fi, and WiMAX. Additionally,a variety of authorization and authentication techniques, such asusername/password, OAuth, Kerberos, SecureID, digital certificates, andmore, can be used to secure the communications.

Monitor 120 and the network security system 190 can include one or morecomputers and computer systems coupled in communication with oneanother. They can also be one or more virtual computing and/or storageresources. For example, the monitor 120 can be one or more Amazon EC2instances and the network security system 190 can be an Amazon S3storage. Other computing-as-service platforms such as Force.com™ fromSalesforce™, Rackspace™, or Heroku™ could be used rather thanimplementing the N-CASB 160 on direct physical computers or traditionalvirtual machines. Additionally, to implement the functionalities of theN-CASB 160, one or more engines can be used and one or more points ofpresence (POPs) can be established. The engines can be of varying typesincluding a workstation, server, computing cluster, blade server, serverfarm, or any other data processing system or computing device. Theengines can be communicably coupled to the databases via a differentnetwork connection. For example, the extraction engine 121 can becoupled via the network(s) 115 (e.g., the Internet), classificationengine 122 can be coupled via a direct network link and security engine123 can be coupled by yet a different network connection. In otherexamples, the data plane 125 POPs can be distributed geographicallyand/or co-hosted with particular cloud services. Similarly, themanagement plane 124 POPs can be distributed geographically. The twotypes of POPs can be either separately hosted or co-hosted as well.

Having described the elements of FIG. 1 and their interconnections,elements of the figure will now be described in greater detail. TheN-CASB 160 provides a variety of functionalities via the managementplane 124 and the data plane 125. Data plane 125 includes an extractionengine 121, a classification engine 122, and a security engine 123,according to one implementation. Other functionalities, e.g., a controlplane, can also be provided. These functionalities collectively providesecure interfacing with the SP 102 by the client devices 150. Althoughwe use the term network security system to describe the N-CASB 160, moregenerally the system provides application visibility and controlfunctions as well as security.

The network security system 190, according to one implementation,includes a plurality of computing devices with a web browser with asecure, web-delivered interface provided by the N-CASB 160 to define andadminister the content policies 191. The N-CASB 160 according to someimplementations is a multi-tenant system, so a user of a managementclient can only change the content policies 191 associated with herorganization. In some implementations, APIs can be provided forprogrammatically defining and or updating policies. In suchimplementations, the network security system 190 can include one or moreservers, e.g. a corporate identities directory such as a MicrosoftActive Directory, pushing updates, and/or responding to pull requestsfor updates to the content policies 191. Both systems can co-exist; forexample, some companies may use a corporate identities directory toautomate identification of users within the organization while using aweb interface for tailoring policies to their needs. Management clientsare assigned roles and access to the network security system 190 data iscontrolled based on roles, e.g., read-only vs. read-write.

A general view of how the N-CASB 160 functions has been provided.Companies, or more generally any individual or entity, wishing to bettersecure their use of SaaS applications sign up with the N-CASB 160. Usinga web-based interface and a computer device, the company can establish apolicy in the content policies 191 for their users. For each activitythat involves manipulation of content, one or more content inspectionrules are applied to the content by the N-CASB 160. If it is determinedthat the content is subject to content control, i.e. it is sensitivedata, then one or more security actions are triggered to prevent leakageor breach of sensitive data enclosed in the content. These approacheswill both be discussed now in greater detail.

While the system shown in FIG. 1 is described herein with reference toparticular blocks, it is to be understood that the blocks are definedfor convenience of description and are not intended to require aparticular physical arrangement of component parts. Further, the blocksneed not correspond to physically distinct components. To the extentthat physically distinct components are used, connections betweencomponents (e.g., for data communication) can be wired and/or wirelessas desired. The different elements or components can be combined intosingle software modules and multiple software modules can run on thesame hardware.

Trust Relationship Preservation

FIG. 7 shows one implementation of the trust relationship preservationduring a federated SSO session by the N-CASB assertion proxy (AP) 170.In particular, FIG. 7 shows one implementation of a message exchangechart of federated SSO based on SAML. While a detailed description ofjust the “service provider-initiated” login method as a SAML federatedauthentication method with the N-CASB AP 170 is disclosed in oneimplementation of the technology disclosed, it is understood that othertypes of SAML authentication methods, including “identityprovider-initiated” login are readily derived from the presentdisclosure, and are within the scope of the technology disclosed.Alternate message exchanges and sequences are also possible. For examplein “identity provider-initiated” login, the initial login is directed tothe identity provider (whose public key is configured at the serviceprovider), which forwards the assertion to the N-CASB AP 170. In otherimplementations, different federated SSO technologies can be used, suchas WS-Federation, OAuth, OpenID, SecureID, LDAP, Kerberos, SecureID,Shibboleth System, eXtensible Access Control Markup Language (XACML),and Service Provisioning Markup Language (SPML).

FIG. 7 includes a service provider (SP) 702 and an identity provider(ID) 708. Similar to the configuration shown in FIG. 3, in a separateoff-line or out-of-band process, the SP 702 is configured with a publickey of the IDP 708 and a URL of the IDP 708. Also in a separate off-lineor out-of-band process, the IDP 708 is configured with an ACS URL of theSP 702, a URL of the N-CASB AP 170, and a public key of the N-CASB AP170.

In one implementation, the technology disclosed preserves the trustrelationship between the SP 702 and the IDP 708 during federated SSO byinserting the N-CASB AP 170 in the assertion forwarding chain betweenthe SP 702 and the IDP 708, rather than in the trust chain between theSP 702 and the IDP 708.

In another implementation, the technology disclosed preserves the trustrelationship between the SP 702 and the IDP 708 during federated SSO byconfiguring a digital certificate or key of the IDP 708 at the SP 702,instead of configuring a digital certificate or key of the N-CASB 160 orthe N-CASB AP 170, and verifying, at the SP 702, an assertion generatedby the IDP 708 using a public key of the IDP 708, rather than using apublic key of the N-CASB 160 or of the N-CASB AP 170.

In yet another implementation, the technology disclosed preserves thetrust relationship between the SP 702 and the IDP 708 during federatedSSO by configuring the SP 702 to forward an authentication request to aURL of the IDP 708, rather than to a URL of the N-CASB 160 or of theN-CASB AP 170.

In a further implementation, the technology disclosed preserves thetrust relationship between the SP 702 and the IDP 708 during federatedSSO by preventing the N-CASB 160 or the N-CASB AP 170 from accessing andmodifying the contents of the assertion generated by the IDP 708.

In FIG. 7, all communications between the SP 702 and the IDP 708 occurvia the browser 336. At exchange 1, the user 326 tries to log in to theSaaS application represented by the SP 702 or to any other resource orservice hosted or provided by the SP 702. However, before the user 326is able to use services provided by the SP 702, the “identity” of theuser 326 must be provided by the IDP 708, and authenticated and acceptedby the SP 702. This is what is meant by “authentication”. In response,at exchange 2, the SP 702 generates an authentication request, i.e. a“SAML request”, which is forwarded to a URL of the IDP 708. At exchange3, the SP 702 redirects the browser 336 to the URL of the IDP 708. Inother implementations, the redirection occurs via API calls from anapplication program of the user 326.

At exchange 4, the IDP 708 authenticates the user 326, for example, by amulti-factor authentication mechanism or a previous IDP authenticationsession where the IDP 708 is part of a larger trust relationship andwhere the user 326 already has an assertion provided to it from anotherIDP. Upon successful authentication of the user 326, the IDP 708generates an “assertion” or “SAML assertion” at exchange 5.

Within the assertion itself, the IDP 708 identifies adestination/recipient URL. The IDP 708 is configured to identify thedestination/recipient URL as the ACS URL of the SP 702. Such an IDP andassertion configuration is different from the IDP and assertionconfiguration implemented by existing CASBs, which change or modify thedestination/recipient URL within the assertion to be the CASB URL or thereverse proxy URL, rather than be the SP ACS URL. According to someimplementations, the technology disclosed achieves this by preventingthe N-CASB 160 and/or the N-CASB AP 170 from accessing and modifying thecontents (e.g., the destination/recipient URL of the assertion) of theassertion generated by the IDP 708.

Once generated, the IDP 708 certifies the assertion using an IDP privatekey and encrypts the certified assertion using a public key of theN-CASB AP 170. Encryption ensures that the user 326 is not able tobypass the N-CASB AP 170 or the N-CASB 160 because, without the N-CASBAP 170 or the N-CASB 160 decrypting the encrypted assertion, the user326 cannot use the encrypted assertion to access the SP 702.

At exchange 6, the IDP 708 forwards the encrypted and certifiedassertion to the N-CASB AP 170. Note that the posting of the encryptedand certified assertion to the N-CASB AP 170 is achieved withoutaccessing or modifying the contents of the assertion generated by theIDP 708. In particular, the posting occurs without changing or modifyinga destination/recipient URL of the assertion. In one implementation,this is achieved by the off-line or out-of-band configuration of the IDP708 with a URL of the N-CASB AP 170, as discussed supra. Thisconfiguration ensures that the encrypted and certified assertion isposted to the N-CASB AP 170; thus, obviating the need to change ormodify the destination/recipient URL within the assertion.

At exchange 7, the N-CASB AP 170 decrypts the encrypted assertion usinga private key of the N-CASB AP 170. Also at exchange 7, the N-CASB 160or the N-CASB AP 170 evaluates the traffic to determine whether thetraffic is routed from a managed device or an unmanaged device. If thetraffic is routed from a managed device, then at exchange 8, the N-CASBAP 170 posts the decrypted assertion to the ACS URL of the SP 702identified within the assertion. Then, at exchange 10, the ACS of the SP702 verifies the decrypted assertion using the IDP public key. This isin contrast with existing CASBs, which, for the federated SSOauthentication, use a CASB public key instead of the IDP public key and,as a result, modify the trust relationship between the SP and IDP.

Once the assertion is verified by the SP 702, the user is logged in tothe SaaS application at exchange 10.

In contrast, if at exchange 7, the N-CASB 160 or the N-CASB AP 170determines that the traffic is routed from an unmanaged device, then, atexchange 10, the N-CASB 160 or the N-CASB AP 170 posts the decryptedassertion to a reverse proxy 180 via the browser 336, instead of postingit to the ACS of the SP 702. In one implementation, this is done byadding a revers proxy domain to the ACS URL of the SP 702 or to a SaaSapplication URL (provided by the SP 702) to which the decryptedassertion was supposed to be posted. For example, if the SaaSapplication URL is “login.saasapplication.com”, then the decryptedassertion is posted to “login.saasapplication.com/reverseproxydomian”.

FIG. 8 shows another implementation of a reverse proxy routing trafficfrom an unmanaged device to a network security system for policyenforcement. A list of common uses of reverse proxies may be found in<https://en.wikipedia.org/wiki/Reverse_proxy>.

At exchange 12, the reverse proxy (RP) 180 strips off the reverse proxydomain from ACS URL of the SP 702 of the decrypted assertion andforwards the decrypted assertion to a network security system or forwardproxy (FP) 190 at exchange 13. The FP 190, at exchange 14, enforcessecurity policies on the routed traffic to control access to the SP 702,as described supra in the discussion of FIG. 1. If the routed traffic isdetermined by the network security system 190 to not qualify forblocking or another security action based on the security policies, thenthe decrypted assertion is sent to the SP 702 at exchange 15.

At exchange 16, the ACS of the SP 702 verifies the assertion using thepublic key of the IDP 708, as it would have at exchange 9 in the case ofa managed device. Further, the pages returned by the SP 702 at exchange17 include a plurality of URLs, which are forwarded to the reverse proxy180 by the network security system 190 at exchange 18. The reverse proxy602 rewrites these URLs so that when the user 326 clicks on them, theninstead of going directly to the SP 702, the user is tunneled throughthe network security system 190 for policy enforcement. This way, anysubsequent traffic from the unmanaged device is mandatorily routedthrough the network security system 190.

FIG. 9 shows another implementation of the trust relationshippreservation during a federated SSO session by the N-CASB assertionproxy (AP) 170. In particular, FIG. 9 shows one implementation of amessage exchange chart of federated SSO based on WS-Federation protocol.In some implementations, WS-Federation is the federated SSOauthentication method used in Microsoft products like Office 365™.

In FIG. 9, the configuration of the service provider, the identityprovider, the N-CASB, and the N-CASB AP 170 mimics that of the SP 702,the IDP 708, the N-CASB 160, and the N-CASB 170 in FIG. 7, such that thetrust relationship between the service provider and the identityprovider is preserved, as discussed supra. Accordingly, the exchanges 1to 5 and the exchanges 7 to 20 correspond directly with respectiveexchanges 1 to 5 and exchanges 7 to 20 in FIGS. 7-8. However, followingthe WS-Federation protocol, at exchange 6 in FIG. 9, the IDP 708directly provides the certified and encrypted assertion to the N-CASB AP170, without redirection to the browser 336. This is different from theSAML protocol where the certified and encrypted assertion is provided tothe N-CASB AP 170 via the browser 336.

FIG. 10 shows one implementation of the trust relationship preservationduring a federated SSO session by the N-CASB assertion proxy (AP) 170.In particular, FIG. 10 shows one implementation of a message exchangechart of federated SSO based on SAML where the identity provider isconfigured to encrypt the assertion using a public key of the serviceprovider. Such a configuration is common in certain SaaS applicationssuch as Box™. The technology disclosed handles such configurations byusing a “double encryption” technique where the IDP performs a firstassertion encryption using a N-CASB public key instead of a SP publickey, and the N-CASB AP 170 performs a second assertion encryption usingthe same SP public key configured at the IDP. Prior to the secondassertion encryption, the N-CASB AP 170 decrypts the assertion using aN-CASB AP private key.

FIG. 10 includes a service provider (SP) 1002 and an identity provider(ID) 1008. In a separate off-line or out-of-band process, the SP 1002 isconfigured with a public key of the IDP 1008 and a URL of the IDP 1008.Also in a separate off-line or out-of-band process, the IDP 1008 isconfigured with an ACS URL of the SP 1002, a URL of the N-CASB AP 170, apublic key of the SP 1002, and a public key of the N-CASB AP 170. Alsoin a separate off-line or out-of-band process, the N-CASB 170 isconfigured to share the same public key of the SP 1002 with the IDP1008.

In FIG. 10, all communications between the SP 1002 and the IDP 1008occur via the browser 336. At exchange 1, the user 326 tries to log into the SaaS application represented by the SP 1002 or to any otherresource or service hosted or provided by the SP 1002. However, beforethe user 326 is able to use services provided by the SP 1002, the“identity” of the user 326 must be provided by the IDP 1008, andauthenticated and accepted by the SP 1002. This is what is meant by“authentication”. In response, at exchange 2, the SP 1002 generates anauthentication request, i.e. a “SAML request:, which is forwarded to aURL of the IDP 1008. At exchange 3, the SP 1002 redirects the browser336 to the URL of the IDP 1008. In other implementations, theredirection occurs via API calls from an application program of the user326.

At exchange 4, the IDP 1008 authenticates the user 326, for example, bya multi-factor authentication mechanism or a previous IDP authenticationsession where the IDP 1008 is part of a larger trust relationship andwhere the user 326 already has an assertion provided to it from anotherIDP. Upon successful authentication of the user 326, the IDP 1008generates an “assertion” or “SAML assertion” at exchange 5.

Within the assertion itself, the IDP 1008 identifies adestination/recipient URL. The IDP 1008 is configured to identify thedestination/recipient URL as the ACS URL of the SP 1002. This IDP andassertion configuration is different from the IDP and assertionconfiguration implemented by existing CASBs, which change or modify thedestination/recipient URL within the assertion to be the CASB URL or thereverse proxy URL, rather than be the SP ACS URL. According to someimplementations, the technology disclosed achieves this by preventingthe N-CASB 160 and/or the N-CASB AP 170 from accessing and modifying thecontents of the assertion generated by the IDP 1008, such as modifyingthe destination/recipient URL of the assertion.

Once generated, the IDP 1008 certifies the assertion using an IDPprivate key and encrypts the certified assertion using the configuredpublic key of the N-CASB AP 170, instead of using the configured publickey of the SP 1008.

At exchange 6, the IDP 1008 forwards the encrypted and certifiedassertion to the N-CASB AP 170. Note that the posting of the encryptedand certified assertion to the N-CASB AP 170 is achieved withoutaccessing or modifying the contents of the assertion generated by theIDP 1008. In particular, the posting occurs without changing ormodifying a destination/recipient URL of the assertion. In oneimplementation, this is achieved by the off-line or out-of-bandconfiguration of the IDP 1008 with a URL of the N-CASB AP 170, asdiscussed supra. This configuration ensures that the encrypted andcertified assertion is posted to the N-CASB AP 170; thus, obviating theneed to change or modify the destination/recipient URL within theassertion.

At exchange 7, the N-CASB AP 170 decrypts the encrypted assertion usinga private key of the N-CASB AP 170 and re-encrypts the assertion usingthe same public key of the SP 1002 that it shares with the IDP 1008.Also at exchange 7, the N-CASB 160 or the N-CASB AP 170 evaluates thetraffic to determine whether the traffic is routed from a managed deviceor an unmanaged device. If the traffic is routed from a managed device,then at exchange 8, the N-CASB AP 170 posts the decrypted assertion tothe ACS URL of the SP 1002 identified within the assertion. Then, atexchange 10, the ACS of the SP 1002 verifies the decrypted assertionusing the IDP public key. This is in contrast with existing CASBs,which, for the federated SSO authentication, use a CASB public keyinstead of the IDP public key and, as a result, modify the trustrelationship between the SP and IDP.

Once the assertion is verified by the SP 1002, the user is logged in tothe SaaS application at exchange 10.

In contrast, if at exchange 7, the N-CASB 160 or the N-CASB AP 170determines that the traffic is routed from an unmanaged device, then, atexchange 10, the N-CASB 160 or the N-CASB AP 170 posts the decryptedassertion to a reverse proxy 180 via the browser 336, instead of postingit to the ACS of the SP 1002. Further processing of the re-encryptedassertion corresponds directly with respective exchanges 11 to 20 inFIG. 8.

Security Enforcement at the Assertion Proxy

In some implementations, one or more security policies can be enforcedat the assertion proxy. One example includes allowing or blocking accessto the requested service provider (SaaS application) based oninformation included in the assertion provided by the identity provider(IDaaS). In implementations, the assertion proxy can be configured witha public key of the identity provider to verify whether a receivedassertion was issued by the authorized identity provider or by anunauthorized, potentially malicious man-in-the-middle (MITM). Uponverification based on the public key of the identity provider, theassertion proxy can use the verified assertion to either allow or blockaccess to the requested SaaS application.

Processes

FIG. 11 depicts a representative method of non-intrusive securityenforcement for federated single sign-on (SSO) authentication. In someimplementations, the authentication is cloud-based federated singlesign-on (SSO). Flowchart in FIG. 11 can be implemented at leastpartially with a computer or other data processing system, e.g., by oneor more processors configured to receive or retrieve information,process the information, store results, and transmit the results. Otherimplementations may perform the actions in different orders and/or withdifferent, fewer or additional actions than those illustrated in FIG.11. Multiple actions can be combined in some implementations. Forconvenience, this flowchart is described with reference to the systemthat carries out a method. The system is not necessarily part of themethod.

FIG. 11 includes a process that begins at action 1110 by configuring anidentity provider (IDP) to use a proxy-unified resource locator (URL)for forwarding an assertion generated when a user logs into a serviceprovider (SP), in place of an assertion consumer service (ACS)-URL ofthe SP, and to encrypt the assertion using a proxy-public key.

The SP and the IDP are in a trusted relationship established byconfiguring a SSO-unified resource locator (URL) and a public key of theIDP at the SP and configuring the SP's ACS-URL at the IDP and digitallycertifying the generated assertion using an IDP-signature. The trustrelationship between the SP and the IDP is preserved by maintaining theIDP-signature based digital certification of the generated assertion andvalidating the decrypted assertion at the SP using the IDP's public keyto establish the federated SSO authenticated session.

In one implementation, the SP is a Software-as-a-Service (SaaS)application. In another implementation, the IDP is a third-partyidentity-as-a-service (IDaaS) used by an entity for the federated SSOauthentication to the SP.

At action 1120, an assertion proxy is configured at the proxy-URL. Theassertion proxy uses the SP's ACS-URL for forwarding. In oneimplementation, the assertion proxy is a cloud service hosted by a cloudaccess service broker (CASB). In another implementation, the assertionproxy is a local proxy hosted by a CASB on premise for the entity. Inyet another implementation, the assertion proxy is different from theIDP and hosted by a CASB separate from an IDaaS hosting the IDP.

At action 1130, the encrypted assertion is received at the assertionproxy and decrypted with a complementary proxy-private key.

At action 1140, the assertion proxy is inserted in between the user'sclient and an ACS of the SP by forwarding the decrypted assertion to theSP's ACS-URL to establish a federated single sign-on (SSO) authenticatedsession through the inserted assertion proxy. In some implementations, acloud-based federated single sign-on (SSO) authenticated session isestablished through the inserted assertion proxy.

The method described in this section and other sections of thetechnology disclosed can include one or more of the following featuresand/or features described in connection with additional methodsdisclosed. In the interest of conciseness, the combinations of featuresdisclosed in this application are not individually enumerated and arenot repeated with each base set of features. The reader will understandhow features identified in this method can readily be combined with setsof base features identified as implementations such as terminology,introduction, and system overview.

In one implementation, in response to determining that the user's clientis an unmanaged device, the SP's ACS-URL is encoded with an addedreverse proxy-domain at the inserted assertion proxy and the decryptedassertion is forwarded to a reverse proxy via the user's client. In someimplementations, the unmanaged device is a Bring Your Own Device (BYOD)and/or an off-network device whose traffic is not being tunneled througha policy-enforcing server. Further, the reverse proxy strips the reverseproxy-domain and forwards the decrypted assertion to a network securitysystem. The network security system evaluates the decrypted assertionbased on or more security policies and forwards the evaluated assertionto the SP's ACS. Then, at the reverse proxy, the URLs contained in pagesserved by the SP are rewritten with rewritten URLs that redirectsubsequent traffic from the user's client during the federated SSOauthenticated session through the reverse proxy.

In one implementation, the assertion proxy and the reverse proxy arecombined and hosted as a single proxy.

In some implementations, in response to determining that the user'sclient is an unmanaged device, access authorization of the user's clientto the SP is blocked. In other implementations, in response todetermining that the user's client is managed, the decrypted assertionis forwarded from the inserted assertion proxy to the SP's ACS via anetwork security system for establishing the federated SSO authenticatedsession. In yet other implementations, the decrypted assertion isevaluated at the reverse proxy based on one or more security policiesand the evaluated assertion is forwarded to the SP's ACS.

In one implementation where the IDP uses a Security Assertion MarkupLanguage (SAML) protocol, the encrypted assertion is received at theassertion proxy via the user's client. In another implementation wherethe IDP uses a Web Services (WS)-Federation protocol for activeauthentication, the encrypted assertion is received at the assertionproxy from the IDP. In such an implementation, the IDP is an ActiveDirectory Federation Service (ADFS).

In some implementations, one or more IDPs are configured to use theproxy-URL, in place of ACS-URLs of multiples SPs, and to encrypt theassertions using the proxy-public key.

In some implementations, the IDP is configured to use the proxy-publickey for encrypting the assertion, in place of the SP-public key. Also,the encrypted assertion is decrypted at the assertion proxy using thecomplementary proxy-private key, and the decrypted assertion isre-encrypted at the assertion proxy using the SP-public key. Then, there-encrypted assertion is forwarded to the SP's ACS.

Other implementations of the method described in this section caninclude a computer readable storage medium storing instructions in anon-transitory manner, which are executable by a processor to performany of the methods described above. Yet another implementation of themethod described in this section can include a system including memoryand one or more processors operable to execute instructions, stored inthe memory, to perform any of the methods described above.

FIG. 12 is a flowchart showing a method of non-intrusively enforcingsecurity during federated single sign-on (SSO) authentication withoutmodifying a trust relationship between a service provider (SP) and anidentity provider (IDP). In some implementations, the authentication iscloud-based federated single sign-on (SSO). Flowchart in FIG. 12 can beimplemented at least partially with a computer or other data processingsystem, e.g., by one or more processors configured to receive orretrieve information, process the information, store results, andtransmit the results. Other implementations may perform the actions indifferent orders and/or with different, fewer or additional actions thanthose illustrated in FIG. 12. Multiple actions can be combined in someimplementations. For convenience, this flowchart is described withreference to the system that carries out a method. The system is notnecessarily part of the method.

FIG. 12 includes a process that begins at action 1210 where the trustrelationship is established between the SP and the IDP by configuring aSSO-unified resource locator (URL) and a public key of the IDP at the SPand configuring an assertion consumer service (ACS)-URL of the SP at theIDP.

At action 1220, the method includes generating an assertion at the IDPwhen a user logs into the SP, identifying the SP's ACS-URL in thegenerated assertion, and digitally signing the generated assertion usingan IDP-certificate.

At action 1230, the method includes configuring the IDP to encrypt thesigned assertion using a proxy-public key of an assertion proxy and toforward the encrypted assertion to a proxy-URL of the assertion proxyinstead of the SP's ACS-URL.

At action 1240, the method includes decrypting the encrypted assertionat the assertion proxy with a complementary proxy-private key andforwarding the decrypted assertion to an ACS of the SP using the SP'sACS-URL identified in the decrypted assertion.

At action 1250, the method includes preserving the trust relationshipbetween the SP and the IDP by validating the decrypted assertion at theSP using the IDP's public key to establish a federated SSO authenticatedsession through the assertion proxy.

The method described in this section and other sections of thetechnology disclosed can include one or more of the following featuresand/or features described in connection with additional methodsdisclosed. In the interest of conciseness, the combinations of featuresdisclosed in this application are not individually enumerated and arenot repeated with each base set of features. The reader will understandhow features identified in this method can readily be combined with setsof base features identified as implementations such as terminology,introduction, and system overview.

In one implementation, in response to determining that the user's clientis an unmanaged device, the SP's ACS-URL is encoded with an addedreverse proxy-domain at the inserted assertion proxy and the decryptedassertion is forwarded to a reverse proxy via the user's client. In someimplementations, the unmanaged device is a Bring Your Own Device (BYOD)and/or an off-network device whose traffic is not being tunneled througha policy-enforcing server. Further, the reverse proxy strips the reverseproxy-domain and forwards the decrypted assertion to a network securitysystem. The network security system evaluates the decrypted assertionbased on or more security policies and forwards the evaluated assertionto the SP's ACS. Then, at the reverse proxy, the URLs contained in pagesserved by the SP are rewritten with rewritten URLs that redirectsubsequent traffic from the user's client during the federated SSOauthenticated session through the reverse proxy.

In one implementation, the assertion proxy and the reverse proxy arecombined and hosted as a single proxy.

In some implementations, in response to determining that the user'sclient is an unmanaged device, access authorization of the user's clientto the SP is blocked. In other implementations, in response todetermining that the user's client is managed, the decrypted assertionis forwarded from the inserted assertion proxy to the SP's ACS via anetwork security system for establishing the federated SSO authenticatedsession. In yet other implementations, the decrypted assertion isevaluated at the reverse proxy based on one or more security policiesand the evaluated assertion is forwarded to the SP's ACS.

In one implementation where the IDP uses a Security Assertion MarkupLanguage (SAML) protocol, the encrypted assertion is received at theassertion proxy via the user's client. In another implementation wherethe IDP uses a Web Services (WS)-Federation protocol for activeauthentication, the encrypted assertion is received at the assertionproxy from the IDP. In such an implementation, the IDP is an ActiveDirectory Federation Service (ADFS).

In some implementations, one or more IDPs are configured to use theproxy-URL, in place of ACS-URLs of multiples SPs, and to encrypt theassertions using the proxy-public key.

In some implementations, the IDP is configured to use the proxy-publickey for encrypting the assertion, in place of the SP-public key. Also,the encrypted assertion is decrypted at the assertion proxy using thecomplementary proxy-private key, and the decrypted assertion isre-encrypted at the assertion proxy using the SP-public key. Then, there-encrypted assertion is forwarded to the SP's ACS.

Other implementations of the method described in this section caninclude a computer readable storage medium storing instructions in anon-transitory manner, which are executable by a processor to performany of the methods described above. Yet another implementation of themethod described in this section can include a system including memoryand one or more processors operable to execute instructions, stored inthe memory, to perform any of the methods described above.

FIG. 13 is a flowchart showing a method of non-intrusively enforcingsecurity during federated single sign-on (SSO) authentication withoutmodifying a trust relationship between a service provider (SP) and anidentity provider (IDP). In some implementations, the authentication iscloud-based federated single sign-on (SSO). Flowchart in FIG. 13 can beimplemented at least partially with a computer or other data processingsystem, e.g., by one or more processors configured to receive orretrieve information, process the information, store results, andtransmit the results. Other implementations may perform the actions indifferent orders and/or with different, fewer or additional actions thanthose illustrated in FIG. 13. Multiple actions can be combined in someimplementations. For convenience, this flowchart is described withreference to the system that carries out a method. The system is notnecessarily part of the method.

FIG. 13 includes a process that begins at action 1310 where the trustrelationship is established between the SP and the IDP.

At action 1320, the IDP is configured to forward an assertion generatedwhen a user logs into the SP to an assertion proxy instead of anassertion consumer service of the SP.

At action 1330, the assertion is evaluated against one or more securitypolicies using the assertion proxy and forwarding the evaluatedassertion to the SP.

At action 1340, the trust relationship between the SP and the IDP ispreserved by validating the evaluated assertion at the SP using acertification of the IDP to establish a federated SSO authenticatedsession through the assertion proxy.

Other implementations of the method described in this section caninclude a computer readable storage medium storing instructions in anon-transitory manner, which are executable by a processor to performany of the methods described above. Yet another implementation of themethod described in this section can include a system including memoryand one or more processors operable to execute instructions, stored inthe memory, to perform any of the methods described above.

Particular Implementations

We describe various implementations of preserving a trust relationshipbetween a service provider (SP) and an identity provider (IDP) bynon-intrusive security enforcement during federated single sign-on(SSO). In some implementations, the authentication is cloud-basedfederated single sign-on (SSO).

The technology disclosed can be practiced as a system, method, orarticle of manufacture. One or more features of an implementation can becombined with the base implementation. Implementations that are notmutually exclusive are taught to be combinable. One or more features ofan implementation can be combined with other implementations. Thisdisclosure periodically reminds the user of these options. Omission fromsome implementations of recitations that repeat these options should notbe taken as limiting the combinations taught in the precedingsections—these recitations are hereby incorporated forward by referenceinto each of the following implementations.

A system implementation of the technology disclosed includes one or moreprocessors coupled to memory. The memory is loaded with computerinstructions which, when executed on the processors, cause non-intrusivesecurity enforcement during federated single sign-on (SSO)authentication. The system includes an assertion proxy.

When a user logs into a service provider (SP), an assertion isgenerated. For forwarding the assertion, the system configures anidentity provider (IDP) to use a proxy-unified resource locator (URL) inplace of an assertion consumer service (ACS)-URL of the SP. The IDP isalso configured to encrypt the assertion using a proxy-public key.

At the proxy-URL, the system configures the assertion proxy to use theSP's ACS-URL for forwarding. The assertion proxy can be a cloud servicehosted by a cloud access service broker (CASB). The assertion proxy canalso be a local proxy hosted by a CASB on premise for the entity. Inimplementations, the assertion proxy is different from the IDP andhosted by a CASB separate from an IDaaS hosting the IDP.

The assertion proxy then receives the encrypted assertion and decryptsthe encrypted assertion with a complementary proxy-private key. Thesystem inserts the assertion proxy in between the user's client and anACS of the SP by forwarding the decrypted assertion to the SP's ACS-URL,which establishes a federated single sign-on (SSO) authenticated sessionthrough the inserted assertion proxy.

This system implementation and other systems disclosed optionallyinclude one or more of the following features. System can also includefeatures described in connection with methods disclosed. In the interestof conciseness, alternative combinations of system features are notindividually enumerated. Features applicable to systems, methods, andarticles of manufacture are not repeated for each statutory class set ofbase features. The reader will understand how features identified inthis section can readily be combined with base features in otherstatutory classes.

The SP can be a Software-as-a-Service (SaaS) application. Examples of SPinclude Salesforce.com™, Box™, Dropbox™, Google Apps™, Amazon AWS™,Microsoft Office 365™, Workday™, Oracle on Demand™, Taleo™, Yammer™, andConcur™. The IDP can be a third-party identity-as-a-service (IDaaS) usedby an entity for the federated SSO authentication to the SP. Examples ofIDP include Okta™, Ping Identity™, Windows Azure Active Directory™,EmpowerID™, OneLogin™, Bitium™, Centrify™, Identacor™, and LastPass™.

The user's client can be an unmanaged device such as a Bring Your OwnDevice (BYOD) and/or an off-network device whose traffic is not beingtunneled through a policy-enforcing server. When the system determinesthat the user's client is an unmanaged device, the SP's ACS-URL can beencoded with an added reverse proxy-domain at the inserted assertionproxy and the decrypted assertion can be forwarded to a reverse proxyvia the user's client with a validation token. After the validationtoken is validated, the reverse proxy-domain can be stripped at thereverse proxy and the decrypted assertion can be forwarded to a networksecurity system.

After that, the decrypted assertion can be evaluated at the networksecurity system based on one or more security policies and the evaluatedassertion can be forwarded to the SP's ACS. Finally, the reverse proxycan rewrite URLs contained in pages served by the SP with rewritten URLsthat redirect subsequent traffic from the user's client during thefederated SSO authenticated session through the reverse proxy.

Additionally, in response to determining that the user's client is anunmanaged device, the system can block access authorization of theuser's client to the SP.

In response to determining that the user's client is managed, thedecrypted assertion can be forwarded from the inserted assertion proxyto the SP's ACS via a network security system for establishing thefederated SSO authenticated session.

The decrypted assertion can be evaluated at the reverse proxy based onone or more security policies and forwarded to the SP's ACS.

The assertion proxy and the reverse proxy can be combined and hosted asa single proxy, according to some implementations.

The security policies can be enforced at the assertion proxy, inaddition to or instead of the reverse proxy. Such an implementationobviates the need of a reverse proxy. Security enforcement includesallowing or blocking access to the SP based on IDP provided informationin the assertion and verification of IDP's identity by the assertionproxy in dependence upon the IDP's public key configured at theassertion proxy.

The IDP can use a Security Assertion Markup Language (SAML) protocol. Insuch implementations, the encrypted assertion is received at theassertion proxy via the user's client, according to someimplementations. The IDP can also use a Web Services (WS)-Federationprotocol for active authentication. In such implementations, theencrypted assertion is received at the assertion proxy from the IDP,bypassing the user's client. The IDP can also use Active DirectoryFederation Service (ADFS).

The trust relationship between the SP and the IDP can be established byconfiguring a SSO-unified resource locator (URL) and a public key of theIDP at the SP, configuring the SP's ACS-URL at the IDP, and digitallycertifying the generated assertion using an IDP-signature. The trustrelationship between the SP and the IDP can be preserved by maintainingthe IDP-signature based digital certification of the generated assertionand validating the decrypted assertion at the SP using the IDP's publickey to establish the federated SSO authenticated session.

The system can configure one or more IDPs to use the proxy-URL, in placeof ACS-URLs of multiples SPs, and to encrypt the assertions using theproxy-public key.

The system can also re-encrypt the decrypted assertion at the assertionproxy using a public key of the SP and forward the re-encryptedassertion to ACS of the SP.

Other implementations may include a non-transitory computer readablestorage medium storing instructions executable by a processor to performfunctions of the system described above. Yet another implementation mayinclude a method performing the functions of the system described above.

Another system implementation of the technology disclosed includes oneor more processors coupled to memory. The memory is loaded with computerinstructions which, when executed on the processors, cause doubleencryption during federated single sign-on (SSO) authentication. Thesystem includes an assertion proxy.

The system configures an identity provider (IDP) to encrypt an assertionusing a public key of an assertion proxy, instead of a public key of aservice provider (SP).

The system decrypts the encrypted assertion at the assertion proxy usinga complementary private key of the assertion proxy.

The system re-encrypts the decrypted assertion at the assertion proxyusing the public key of the SP and forwards the re-encrypted assertionto an assertion consumer service (ACS) of the SP.

Other implementations may include a non-transitory computer readablestorage medium storing instructions executable by a processor to performfunctions of the system described above. Yet another implementation mayinclude a method performing the functions of the system described above.

Another system implementation of the technology disclosed includes oneor more processors coupled to memory. The memory is loaded with computerinstructions which, when executed on the processors, cause non-intrusivesecurity enforcement during federated single sign-on (SSO)authentication without modifying a trust relationship between a serviceprovider (SP) and an identity provider (IDP). The system includes anassertion proxy.

First, the trust relationship between the SP and the IDP is establishedby configuring a SSO-unified resource locator (URL) and a public key ofthe IDP at the SP and configuring an assertion consumer service(ACS)-URL of the SP at the IDP. When a user logs into the SP, anassertion is generated at the IDP. The SP's ACS-URL is identified in thegenerated assertion. The generated assertion is then digitally signedusing an IDP-certificate.

The system then configures the IDP to encrypt the signed assertion usinga proxy-public key of the assertion proxy and to forward the encryptedassertion to a proxy-URL of the assertion proxy instead of the SP'sACS-URL.

Following this, the encrypted assertion is decrypted at the assertionproxy with a complementary proxy-private key and the decrypted assertionis forwarded to an ACS of the SP using the SP's ACS-URL identified inthe decrypted assertion.

Finally, the trust relationship between the SP and the IDP is preservedby validating the decrypted assertion at the SP using the IDP's publickey to establish a federated SSO authenticated session through theassertion proxy.

Each of the features discussed in this particular implementation sectionfor the first system implementation apply equally to this systemimplementation. As indicated above, all the system features are notrepeated here and should be considered repeated by reference.

Other implementations may include a non-transitory computer readablestorage medium storing instructions executable by a processor to performfunctions of the system described above. Yet another implementation mayinclude a method performing the functions of the system described above.

Yet another system implementation of the technology disclosed includesone or more processors coupled to memory. The memory is loaded withcomputer instructions which, when executed on the processors, causenon-intrusive security enforcement during federated single sign-on (SSO)authentication without modifying a trust relationship between a serviceprovider (SP) and an identity provider (IDP). The system includes anassertion proxy.

First, the trust relationship between the SP and the IDP is established.

Then, the system configures the IDP to forward an assertion generatedwhen a user logs into the SP to the assertion proxy instead of anassertion consumer service (ACS) of the SP.

Following this, the assertion is evaluated against one or more securitypolicies using the assertion proxy and forwarded to the SP.

Finally, the trust relationship between the SP and the IDP is preservedby validating the evaluated assertion at the SP using a certification ofthe IDP to establish a federated SSO authenticated session through theassertion proxy.

Each of the features discussed in this particular implementation sectionfor the first system implementation apply equally to this systemimplementation. As indicated above, all the system features are notrepeated here and should be considered repeated by reference.

Other implementations may include a non-transitory computer readablestorage medium storing instructions executable by a processor to performfunctions of the system described above. Yet another implementation mayinclude a method performing the functions of the system described above.

A method implementation of the technology disclosed includesnon-intrusive security enforcement for federated single sign-on (SSO)authentication. The method includes configuring an identity provider(IDP) to use a proxy-unified resource locator (URL) for forwarding anassertion generated when a user logs into a service provider (SP), inplace of an assertion consumer service (ACS)-URL of the SP, and toencrypt the assertion using a proxy-public key.

The method proceeds to configuring an assertion proxy, at the proxy-URL,to use the SP's ACS-URL for forwarding.

Then, the method includes receiving the encrypted assertion at theassertion proxy and decrypting the encrypted assertion with acomplementary proxy-private key.

Finally, the method includes inserting the assertion proxy in betweenthe user's client and an ACS of the SP by forwarding the decryptedassertion to the SP's ACS-URL to establish a federated single sign-on(SSO) authenticated session through the inserted assertion proxy.

Each of the features discussed in this particular implementation sectionfor the first system implementation apply equally to this methodimplementation. As indicated above, all the system features are notrepeated here and should be considered repeated by reference.

Other implementations may include a non-transitory computer readablestorage medium storing instructions executable by a processor to performa method as described above. Yet another implementation may include asystem including memory and one or more processors operable to executeinstructions, stored in the memory, to perform a method as describedabove.

Another method implementation of the technology disclosed includesnon-intrusively enforcing security during federated single sign-on (SSO)authentication without modifying a trust relationship between a serviceprovider (SP) and an identity provider (IDP). The method includesestablishing the trust relationship between the SP and the IDP byconfiguring a SSO-unified resource locator (URL) and a public key of theIDP at the SP and configuring an assertion consumer service (ACS)-URL ofthe SP at the IDP.

The method proceeds to generating an assertion at the IDP when a userlogs into the SP, identifying the SP's ACS-URL in the generatedassertion, and digitally signing the generated assertion using anIDP-certificate.

Following this, the method includes configuring the IDP to encrypt thesigned assertion using a proxy-public key of an assertion proxy and toforward the encrypted assertion to a proxy-URL of the assertion proxyinstead of the SP's ACS-URL.

Then, the method includes decrypting the encrypted assertion at theassertion proxy with a complementary proxy-private key and forwardingthe decrypted assertion to an ACS of the SP using the SP's ACS-URLidentified in the decrypted assertion.

Finally, the method includes preserving the trust relationship betweenthe SP and the IDP by validating the decrypted assertion at the SP usingthe IDP's public key to establish a federated SSO authenticated sessionthrough the assertion proxy.

Each of the features discussed in this particular implementation sectionfor the first system implementation apply equally to this methodimplementation. As indicated above, all the system features are notrepeated here and should be considered repeated by reference.

Other implementations may include a non-transitory computer readablestorage medium storing instructions executable by a processor to performa method as described above. Yet another implementation may include asystem including memory and one or more processors operable to executeinstructions, stored in the memory, to perform a method as describedabove.

Yet another method implementation of the technology disclosed includesnon-intrusively enforcing security during federated single sign-on (SSO)authentication without modifying a trust relationship between a serviceprovider (SP) and an identity provider (IDP).

First, the method includes establishing the trust relationship betweenthe SP and the IDP.

The method proceeds to configuring the IDP to forward an assertiongenerated when a user logs into the SP to an assertion proxy instead ofan assertion consumer service of the SP.

Following this, the method includes evaluating the assertion against oneor more security policies using the assertion proxy and forwarding theevaluated assertion to the SP.

Finally, the method includes preserving the trust relationship betweenthe SP and the IDP by validating the evaluated assertion at the SP usinga certification of the IDP to establish a federated SSO authenticatedsession through the assertion proxy.

Each of the features discussed in this particular implementation sectionfor the first system implementation apply equally to this methodimplementation. As indicated above, all the system features are notrepeated here and should be considered repeated by reference.

Other implementations may include a non-transitory computer readablestorage medium storing instructions executable by a processor to performa method as described above. Yet another implementation may include asystem including memory and one or more processors operable to executeinstructions, stored in the memory, to perform a method as describedabove.

Computer readable media (CRM) implementations the technology disclosedinclude a non-transitory computer readable storage medium impressed withcomputer program instructions, when executed on a processor, implementthe methods described above.

Each of the features discussed in this particular implementation sectionfor the first system implementation apply equally to the CRMimplementation. As indicated above, all the system features are notrepeated here and should be considered repeated by reference.

Computer System

FIG. 14 is a simplified block diagram of a computer system that can beused to implement the technology disclosed. Computer system 1410typically includes at least one processor 1414 that communicates with anumber of peripheral devices via bus subsystem 1412. These peripheraldevices can include a storage subsystem 1424 including, for example,memory devices and a file storage subsystem, user interface inputdevices 1422, user interface output devices 1418, and a networkinterface subsystem 1416. The input and output devices allow userinteraction with computer system 1410. Network interface subsystem 1416provides an interface to outside networks, including an interface tocorresponding interface devices in other computer systems.

In one implementation, the N-CASB 160 is communicably linked to thestorage subsystem 1424 and a user interface input devices 1422.

User interface input devices 1422 can include a keyboard; pointingdevices such as a mouse, trackball, touchpad, or graphics tablet; ascanner; a touch screen incorporated into the display; audio inputdevices such as voice recognition systems and microphones; and othertypes of input devices. In general, use of the term “input device” isintended to include all possible types of devices and ways to inputinformation into computer system 1410.

User interface output devices 1418 can include a display subsystem, aprinter, a fax machine, or non-visual displays such as audio outputdevices. The display subsystem can include a cathode ray tube (CRT), aflat-panel device such as a liquid crystal display (LCD), a projectiondevice, or some other mechanism for creating a visible image. Thedisplay subsystem can also provide a non-visual display such as audiooutput devices. In general, use of the term “output device” is intendedto include all possible types of devices and ways to output informationfrom computer system 1410 to the user or to another machine or computersystem.

Storage subsystem 1424 stores programming and data constructs thatprovide the functionality of some or all of the modules and methodsdescribed herein. These software modules are generally executed byprocessor 1414 alone or in combination with other processors.

Memory 1426 used in the storage subsystem can include a number ofmemories including a main random access memory (RAM) 1434 for storage ofinstructions and data during program execution and a read only memory(ROM) 1432 in which fixed instructions are stored.

A file storage subsystem 1428 can provide persistent storage for programand data files, and can include a hard disk drive, a floppy disk drivealong with associated removable media, a CD-ROM drive, an optical drive,or removable media cartridges. The modules implementing thefunctionality of certain implementations can be stored by file storagesubsystem 1428 in the storage subsystem 1424, or in other machinesaccessible by the processor.

Bus subsystem 1412 provides a mechanism for letting the variouscomponents and subsystems of computer system 1410 communicate with eachother as intended. Although bus subsystem 1412 is shown schematically asa single bus, alternative implementations of the bus subsystem can usemultiple busses. Application server 1420 can be a framework that allowsthe applications of computer system 1410 to run, such as the hardwareand/or software, e.g., the operating system.

Computer system 1410 can be of varying types including a workstation,server, computing cluster, blade server, server farm, or any other dataprocessing system or computing device. Due to the ever-changing natureof computers and networks, the description of computer system 1410depicted in FIG. 14 is intended only as one example. Many otherconfigurations of computer system 1410 are possible having more or fewercomponents than the computer system depicted in FIG. 14.

The technology disclosed can be implemented in the context of anycomputer-implemented system including a database system, a multi-tenantenvironment, or a relational database implementation like an Oracle™compatible database implementation, an IBM DB2 Enterprise Server™compatible relational database implementation, a MySQL™ or PostgreSQL™compatible relational database implementation or a Microsoft SQL Server™compatible relational database implementation or a NoSQL™ non-relationaldatabase implementation such as a Vampire™ compatible non-relationaldatabase implementation, an Apache Cassandra™ compatible non-relationaldatabase implementation, a BigTable™ compatible non-relational databaseimplementation or an HBase™ or DynamoDB™ compatible non-relationaldatabase implementation. In addition, the technology disclosed can beimplemented using different programming models like MapReduce™, bulksynchronous programming, MPI primitives, etc. or different scalablebatch and stream management systems like Apache Storm™, Apache Spark™,Apache Kafka™, Apache Flink™, Truviso™, Amazon Elasticsearch Service™,Amazon Web Services™ (AWS), IBM Info-Sphere™, Borealis™, and Yahoo! S4™.

Any data structures and code described or referenced above are storedaccording to many implementations on a computer-readable storage medium,which may be any device or medium that can store code and/or data foruse by a computer system. This includes, but is not limited to, volatilememory, non-volatile memory, application-specific integrated circuits(ASICs), field-programmable gate arrays (FPGAs), magnetic and opticalstorage devices such as disk drives, magnetic tape, CDs (compact discs),DVDs (digital versatile discs or digital video discs), or other mediacapable of storing computer-readable media now known or later developed.

The preceding description is presented to enable the making and use ofthe technology disclosed. Various modifications to the disclosedimplementations will be apparent, and the general principles definedherein may be applied to other implementations and applications withoutdeparting from the spirit and scope of the technology disclosed. Thus,the technology disclosed is not intended to be limited to theimplementations shown, but is to be accorded the widest scope consistentwith the principles and features disclosed herein. The scope of thetechnology disclosed is defined by the appended claims.

What is claimed is:
 1. A computer-implemented method of non-intrusivelyenforcing security during federated single sign-on (SSO) authenticationwithout modifying an established trust relationship between a serviceprovider (SP) and an identity provider (IDP), the trust relationshiphaving been established by configuring a SSO-unified resource locator(URL) and a public key of the IDP at the SP and configuring an assertionconsumer service (ACS)-URL of the SP at the IDP, the method including:configuring the IDP to encrypt a digitally signed assertion having beendigitally signed using an IDP-certificate and having been generated atthe IDP when a user logs into the SP, the digitally signed assertionbeing encrypted using a proxy-public key of an assertion proxy and toforward the encrypted assertion to a proxy-URL of the assertion proxyinstead of an SP's ACS-URL identified from the assertion; decrypting theencrypted assertion at the assertion proxy with a complementaryproxy-private key and forwarding the decrypted assertion to an ACS ofthe SP using the SP's ACS-URL identified in the decrypted assertion; andpreserving, without modifying, the trust relationship between the SP andthe IDP by validating the decrypted assertion at the SP using the IDP'spublic key to establish a federated SSO authenticated session throughthe assertion proxy.
 2. The computer-implemented method of claim 1,further including: in response to determining that a user's client is anunmanaged device: encoding the SP's ACS-URL with an added reverseproxy-domain at the assertion proxy and forwarding the decryptedassertion to a reverse proxy via the user's client with a validationtoken; after validating the validation token, stripping the reverseproxy-domain at the reverse proxy and forwarding the decrypted assertionto a network security system; evaluating the decrypted assertion at thenetwork security system based on one or more security policies andforwarding the evaluated assertion to the SP's ACS; and rewriting, atthe reverse proxy, URLs contained in pages served by the SP withrewritten URLs that redirect subsequent traffic from the user's clientduring the federated SSO authenticated session through the reverseproxy.
 3. The computer-implemented method of claim 2, wherein theassertion proxy and the reverse proxy are combined and hosted as asingle proxy.
 4. The computer-implemented method of claim 2, wherein thesecurity policies are enforced at the assertion proxy, includingallowing or blocking access to the SP based on IDP provided informationin the assertion and verification of IDP's identity by the assertionproxy in dependence upon the IDP's public key configured at theassertion proxy.
 5. The computer-implemented method of claim 1, whereinthe IDP uses a Security Assertion Markup Language (SAML) protocol. 6.The computer-implemented method of claim 5, further including: receivingthe encrypted assertion at the assertion proxy via a user's client. 7.The computer-implemented method of claim 1, wherein the IDP uses a WebServices (WS)-Federation protocol for active authentication.
 8. Thecomputer-implemented method of claim 7, further including: receiving theencrypted assertion at the assertion proxy from the IDP.
 9. Thecomputer-implemented method of claim 1, wherein the assertion proxy is acloud service hosted by a cloud access service broker (CASB).
 10. Thecomputer-implemented method of claim 1, wherein the assertion proxy isdifferent from the IDP and hosted by a CASB separate from an IDaaShosting the IDP.
 11. The computer-implemented method of claim 1, furtherincluding: configuring one or more IDPs to use the proxy-URL, in placeof ACS-URLs of multiples SPs, and to encrypt the assertions using theproxy-public key.
 12. The computer-implemented method of claim 1,further including: re-encrypting the decrypted assertion at theassertion proxy using a public key of the SP and forwarding there-encrypted assertion to ACS of the SP.
 13. A computer-implementedmethod of non-intrusive security enforcement for federated singlesign-on (SSO) authentication without modifying an established trustrelationship between a service provider (SP) and an identity provider(IDP), the trust relationship having been established by configuring aSSO-unified resource locator (URL) and a public key of the IDP at the SPand configuring an SP's assertion consumer service (ACS)-URL for the SPat the IDP, the method including: configuring an assertion proxy, at aproxy-unified resource locator (URL), to use an SP's ACS-URL forforwarding, the SP's ACS-URL identified in an assertion forwarded by anidentity provider (IDP) that has been configured to use theproxy-unified resource locator (URL) in place of using the SP's ACS-URLfor forwarding assertions generated when a user logs into the serviceprovider (SP), and to encrypt the assertion using a proxy-public key;receiving the encrypted assertion at the assertion proxy and decryptingthe encrypted assertion with a complementary proxy-private key; andpreserving, without modifying the trust relationship between the SP andthe IDP by inserting the assertion proxy in between a user's client andan ACS of the SP by forwarding the assertion as decrypted to the SP'sACS-URL for the SP to validate the assertion using the IDP's public keyand establish a federated single sign-on (SSO) authenticated sessionthrough the inserted assertion proxy.
 14. A computer-implemented methodof non-intrusively enforcing security during federated single sign-on(SSO) authentication without modifying an established trust relationshipbetween a service provider (SP) and an identity provider (IDP), thetrust relationship having been established between the SP and the IDP byconfiguring a SSO-unified resource locator (URL) and a public key of theIDP at the SP and configuring an assertion consumer service (ACS)-URL ofthe SP at the IDP, the method including: receiving from an IDP that hasbeen configured to forward assertions, an assertion that identifies anSP's assertion consumer service (ACS)-URL of the SP and is generatedwhen a user logs into the SP to an assertion proxy instead of anassertion consumer service of the SP; evaluating the assertion againstone or more security policies using the assertion proxy and forwardingthe evaluated assertion to the SP; and preserving without modifying thetrust relationship established between the SP and the IDP by validatingthe evaluated assertion at the SP using a certification of the IDP toestablish a federated SSO authenticated session through the assertionproxy.
 15. A non-transitory computer readable storage medium impressedwith computer program instructions to non-intrusively enforce securityduring federated single sign-on (SSO) authentication without modifyingan established trust relationship between a service provider (SP) and anidentity provider (IDP), the trust relationship having been establishedby configuring a SSO-unified resource locator (URL) and a public key ofthe IDP at the SP and configuring an assertion consumer service(ACS)-URL of the SP at the IDP, the instructions, when executed on aprocessor, implement a method comprising: configuring the IDP to encrypta digitally signed assertion having been digitally signed using anIDP-certificate and having been generated at the IDP when a user logsinto the SP, the digitally signed assertion being encrypted using aproxy-public key of an assertion proxy and to forward the encryptedassertion to a proxy-URL of the assertion proxy instead of an SP'sACS-URL identified from the assertion; decrypting the encryptedassertion at the assertion proxy with a complementary proxy-private keyand forwarding the decrypted assertion to an ACS of the SP using theSP's ACS-URL identified in the decrypted assertion; and preserving,without modifying the trust relationship between the SP and the IDP byvalidating the decrypted assertion at the SP using the IDP's public keyto establish a federated SSO authenticated session through the assertionproxy.
 16. A non-transitory computer readable storage medium impressedwith computer program instructions to conduct non-intrusive securityenforcement for federated single sign-on (SSO) authentication withoutmodifying an established trust relationship between a service provider(SP) and an identity provider (IDP), the trust relationship having beenestablished by configuring a SSO-unified resource locator (URL) and apublic key of the IDP at the SP and configuring an SP's assertionconsumer service (ACS)-URL for the SP at the IDP, the instructions, whenexecuted on a processor, implement a method comprising: configuring anassertion proxy, at at a proxy-unified resource locator (URL), to use anSP's ACS-URL for forwarding, the SP's ACS-URL identified in an assertionforwarded by an identity provider (IDP) that has been configured to usethe proxy-unified resource locator (URL) in place of using the SP'sACS-URL for forwarding assertions generated when a user logs into theservice provider (SP), and to encrypt the assertion using a proxy-publickey; receiving the encrypted assertion at the assertion proxy anddecrypting the encrypted assertion with a complementary proxy-privatekey; and preserving, without modifying the trust relationship betweenthe SP and the IDP by inserting the assertion proxy in between a user'sclient and an ACS of the SP by forwarding the assertion as decrypted tothe SP's ACS-URL for the SP to validate the assertion using the IDP'spublic key and establish a federated single sign-on (SSO) authenticatedsession through the inserted assertion proxy.
 17. A non-transitorycomputer readable storage medium impressed with computer programinstructions to non-intrusively enforce security during federated singlesign-on (SSO) authentication without modifying a trust relationship thathas been established between a service provider (SP) and an identityprovider (IDP) the trust relationship having been established betweenthe SP and the IDP by configuring a SSO-unified resource locator (URL)and a public key of the IDP at the SP and configuring an assertionconsumer service (ACS)-URL of the SP at the IDP, the instructions, whenexecuted on a processor, implement a method comprising: receiving froman IDP that has been configured to forward assertions, an assertion thatidentifies an SP's assertion consumer service (ACS)-URL of the SP and isgenerated when a user logs into the SP to an assertion proxy instead ofan assertion consumer service of the SP; evaluating the assertionagainst one or more security policies using the assertion proxy andforwarding the evaluated assertion to the SP; and preserving withoutmodifying the trust relationship established between the SP and the IDPby validating the evaluated assertion at the SP using a certification ofthe IDP to establish a federated SSO authenticated session through theassertion proxy.
 18. A system including one or more processors coupledto memory, the memory loaded with computer instructions fornon-intrusively enforcing security during federated single sign-on (SSO)authentication without modifying an established trust relationshipbetween a service provider (SP) and an identity provider (IDP), thetrust relationship having been established by configuring a SSO-unifiedresource locator (URL) and a public key of the IDP at the SP andconfiguring an assertion consumer service (ACS)-URL of the SP at theIDP, the instructions, when executed on the processors, implement amethod including: configuring the IDP to encrypt a digitally signedassertion having been digitally signed using an IDP-certificate andhaving been generated at the IDP when a user logs into the SP, thedigitally signed assertion being encrypted using a proxy-public key ofan assertion proxy and to forward the encrypted assertion to a proxy-URLof the assertion proxy instead of an SP's ACS-URL identified from theassertion; decrypting the encrypted assertion at the assertion proxywith a complementary proxy-private key and forwarding the decryptedassertion to an ACS of the SP using the SP's ACS-URL identified in thedecrypted assertion; and preserving, without modifying the trustrelationship between the SP and the IDP by validating the decryptedassertion at the SP using the IDP's public key to establish a federatedSSO authenticated session through the assertion proxy.
 19. A systemincluding one or more processors coupled to memory, the memory loadedwith computer instructions for non-intrusive security enforcement forfederated single sign-on (SSO) authentication without modifying anestablished trust relationship between a service provider (SP) and anidentity provider (IDP), the trust relationship having been establishedby configuring a SSO-unified resource locator (URL) and a public key ofthe IDP at the SP and configuring an assertion consumer service(ACS)-URL of the SP at the IDP, the instructions, when executed on theprocessors, implement a method including: configuring an assertionproxy, at a proxy-unified resource locator (URL), to use an SP's ACS-URLfor forwarding, the SP's ACS-URL identified in an assertion forwarded byan identity provider (IDP) that has been configured to use theproxy-unified resource locator (URL) in place of using the SP's ACS-URLfor forwarding assertions generated when a user logs into the serviceprovider (SP), and to encrypt the assertion using a proxy-public key;receiving the encrypted assertion at the assertion proxy and decryptingthe encrypted assertion with a complementary proxy-private key; andpreserving, without modifying the trust relationship between the SP andthe IDP by inserting the assertion proxy in between a user's client andan ACS of the SP by forwarding the assertion as decrypted to the SP'sACS-URL for the SP to validate the assertion using the IDP's public keyand establish a federated single sign-on (SSO) authenticated sessionthrough the inserted assertion proxy.
 20. A system including one or moreprocessors coupled to memory, the memory loaded with computerinstructions to non-intrusively enforce security during federated singlesign-on (SSO) authentication without modifying an established trustrelationship between a service provider (SP) and an identity provider(IDP) by configuring a SSO-unified resource locator (URL) and a publickey of the IDP at the SP and configuring an assertion consumer service(ACS)-URL of the SP at the IDP, the instructions, when executed on theprocessors, implement a method including: receiving from an IDP that hasbeen configured to forward assertions, an assertion that identifies anSP's assertion consumer service (ACS)-URL of the SP and is generatedwhen a user logs into the SP to an assertion proxy instead of anassertion consumer service of the SP; evaluating the assertion againstone or more security policies using the assertion proxy and forwardingthe evaluated assertion to the SP; and preserving without modifying thetrust relationship established between the SP and the IDP by validatingthe evaluated assertion at the SP using a certification of the IDP toestablish a federated SSO authenticated session through the assertionproxy.